aboutsummaryrefslogtreecommitdiffhomepage
path: root/support/doc
diff options
context:
space:
mode:
Diffstat (limited to 'support/doc')
-rw-r--r--support/doc/api/openapi.yaml760
1 files changed, 565 insertions, 195 deletions
diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml
index 82b8191b2..6c1ffee4f 100644
--- a/support/doc/api/openapi.yaml
+++ b/support/doc/api/openapi.yaml
@@ -31,6 +31,11 @@ info:
31 sessions, and authenticate using this session token. One session token can 31 sessions, and authenticate using this session token. One session token can
32 currently be used at a time. 32 currently be used at a time.
33 33
34 ## Roles
35
36 Accounts are given permissions based on their role. There are three roles on
37 PeerTube: Administrator, Moderator, and User. See the [roles guide](https://docs.joinpeertube.org/#/admin-managing-users?id=roles) for a detail of their permissions.
38
34 # Errors 39 # Errors
35 40
36 The API uses standard HTTP status codes to indicate the success or failure 41 The API uses standard HTTP status codes to indicate the success or failure
@@ -48,9 +53,29 @@ externalDocs:
48tags: 53tags:
49 - name: Accounts 54 - name: Accounts
50 description: > 55 description: >
51 Using some features of PeerTube require authentication, for which Accounts 56 Accounts encompass remote accounts discovered across the federation,
57 and correspond to the main Actor, along with video channels a user can create, which
58 are also Actors.
59
60 When a comment is posted, it is done with your Account's Actor.
61 - name: Users
62 description: >
63 Using some features of PeerTube require authentication, for which User
52 provide different levels of permission as well as associated user 64 provide different levels of permission as well as associated user
53 information. Accounts also encompass remote accounts discovered across the federation. 65 information. Each user has a corresponding local Account for federation.
66 - name: My User
67 description: >
68 Operations related to your own User, when logged-in.
69 - name: My Subscriptions
70 description: >
71 Operations related to your subscriptions to video channels, their
72 new videos, and how to keep up to date with their latest publications!
73 - name: My Notifications
74 description: >
75 Notifications following new videos, follows or reports. They allow you
76 to keep track of the interactions and overall important information that
77 concerns you. You MAY set per-notification type delivery preference, to
78 receive the info either by mail, by in-browser notification or both.
54 - name: Config 79 - name: Config
55 description: > 80 description: >
56 Each server exposes public information regarding supported videos and 81 Each server exposes public information regarding supported videos and
@@ -66,15 +91,21 @@ tags:
66 server then deals with inter-server ActivityPub operations and propagates 91 server then deals with inter-server ActivityPub operations and propagates
67 information across its social graph by posting activities to actors' inbox 92 information across its social graph by posting activities to actors' inbox
68 endpoints. 93 endpoints.
94 externalDocs:
95 url: https://docs.joinpeertube.org/#/admin-following-instances?id=instances-follows
69 - name: Instance Redundancy 96 - name: Instance Redundancy
70 description: > 97 description: >
71 Redundancy is part of the inter-server solidarity that PeerTube fosters. 98 Redundancy is part of the inter-server solidarity that PeerTube fosters.
72 Manage the list of instances you wish to help by seeding their videos according 99 Manage the list of instances you wish to help by seeding their videos according
73 to the policy of video selection of your choice. Note that you have a similar functionality 100 to the policy of video selection of your choice. Note that you have a similar functionality
74 to mirror individual videos, see `Video Mirroring`. 101 to mirror individual videos, see `Video Mirroring`.
102 externalDocs:
103 url: https://docs.joinpeertube.org/#/admin-following-instances?id=instances-redundancy
75 - name: Plugins 104 - name: Plugins
76 description: > 105 description: >
77 Managign plugins installed from a local path or from NPM. 106 Managing plugins installed from a local path or from NPM, or search for new ones.
107 externalDocs:
108 url: https://docs.joinpeertube.org/#/api-plugins
78 - name: Video Abuses 109 - name: Video Abuses
79 description: | 110 description: |
80 Video abuses deal with reports of local or remote videos alike. 111 Video abuses deal with reports of local or remote videos alike.
@@ -292,6 +323,12 @@ paths:
292 responses: 323 responses:
293 '200': 324 '200':
294 description: successful operation 325 description: successful operation
326 '400':
327 x-summary: field inconsistencies
328 description: >
329 Arises when:
330 - the emailer is disabled and the instance is open to registrations
331 - webtorrent and hls are disabled with transcoding enabled - you need at least one enabled
295 delete: 332 delete:
296 summary: Delete instance runtime configuration 333 summary: Delete instance runtime configuration
297 tags: 334 tags:
@@ -332,9 +369,16 @@ paths:
332 content: 369 content:
333 application/json: 370 application/json:
334 schema: 371 schema:
335 type: array 372 type: object
336 items: 373 properties:
337 $ref: '#/components/schemas/Job' 374 total:
375 type: integer
376 example: 1
377 data:
378 type: array
379 maxItems: 100
380 items:
381 $ref: '#/components/schemas/Job'
338 '/server/following/{host}': 382 '/server/following/{host}':
339 delete: 383 delete:
340 security: 384 security:
@@ -350,6 +394,7 @@ paths:
350 description: 'The host to unfollow ' 394 description: 'The host to unfollow '
351 schema: 395 schema:
352 type: string 396 type: string
397 format: hostname
353 responses: 398 responses:
354 '201': 399 '201':
355 description: successful operation 400 description: successful operation
@@ -428,6 +473,7 @@ paths:
428 type: array 473 type: array
429 items: 474 items:
430 type: string 475 type: string
476 format: hostname
431 uniqueItems: true 477 uniqueItems: true
432 /users: 478 /users:
433 post: 479 post:
@@ -968,6 +1014,9 @@ paths:
968 type: array 1014 type: array
969 items: 1015 items:
970 type: string 1016 type: string
1017 examples:
1018 nightly:
1019 externalValue: https://peertube2.cpy.re/api/v1/videos/categories
971 /videos/licences: 1020 /videos/licences:
972 get: 1021 get:
973 summary: List available video licences 1022 summary: List available video licences
@@ -982,6 +1031,9 @@ paths:
982 type: array 1031 type: array
983 items: 1032 items:
984 type: string 1033 type: string
1034 examples:
1035 nightly:
1036 externalValue: https://peertube2.cpy.re/api/v1/videos/licences
985 /videos/languages: 1037 /videos/languages:
986 get: 1038 get:
987 summary: List available video languages 1039 summary: List available video languages
@@ -996,6 +1048,9 @@ paths:
996 type: array 1048 type: array
997 items: 1049 items:
998 type: string 1050 type: string
1051 examples:
1052 nightly:
1053 externalValue: https://peertube2.cpy.re/api/v1/videos/languages
999 /videos/privacies: 1054 /videos/privacies:
1000 get: 1055 get:
1001 summary: List available video privacies 1056 summary: List available video privacies
@@ -1010,6 +1065,9 @@ paths:
1010 type: array 1065 type: array
1011 items: 1066 items:
1012 type: string 1067 type: string
1068 examples:
1069 nightly:
1070 externalValue: https://peertube2.cpy.re/api/v1/videos/privacies
1013 '/videos/{id}': 1071 '/videos/{id}':
1014 put: 1072 put:
1015 summary: Update a video 1073 summary: Update a video
@@ -1038,10 +1096,12 @@ paths:
1038 format: binary 1096 format: binary
1039 category: 1097 category:
1040 description: Video category 1098 description: Video category
1041 type: string 1099 type: integer
1100 example: 4
1042 licence: 1101 licence:
1043 description: Video licence 1102 description: Video licence
1044 type: string 1103 type: integer
1104 example: 2
1045 language: 1105 language:
1046 description: Video language 1106 description: Video language
1047 type: string 1107 type: string
@@ -1058,7 +1118,7 @@ paths:
1058 type: string 1118 type: string
1059 nsfw: 1119 nsfw:
1060 description: Whether or not this video contains sensitive content 1120 description: Whether or not this video contains sensitive content
1061 type: string 1121 type: boolean
1062 name: 1122 name:
1063 description: Video name 1123 description: Video name
1064 type: string 1124 type: string
@@ -1073,7 +1133,7 @@ paths:
1073 maxLength: 30 1133 maxLength: 30
1074 commentsEnabled: 1134 commentsEnabled:
1075 description: Enable or disable comments for this video 1135 description: Enable or disable comments for this video
1076 type: string 1136 type: boolean
1077 originallyPublishedAt: 1137 originallyPublishedAt:
1078 description: Date when the content was originally published 1138 description: Date when the content was originally published
1079 type: string 1139 type: string
@@ -1166,11 +1226,11 @@ paths:
1166 schema: 1226 schema:
1167 $ref: '#/components/schemas/VideoUploadResponse' 1227 $ref: '#/components/schemas/VideoUploadResponse'
1168 '403': 1228 '403':
1169 description: 'The user video quota is exceeded with this video.' 1229 description: user video quota is exceeded with this video
1170 '408': 1230 '408':
1171 description: 'Upload has timed out' 1231 description: upload has timed out
1172 '422': 1232 '422':
1173 description: 'Invalid input file.' 1233 description: invalid input file
1174 requestBody: 1234 requestBody:
1175 content: 1235 content:
1176 multipart/form-data: 1236 multipart/form-data:
@@ -1196,13 +1256,15 @@ paths:
1196 $ref: '#/components/schemas/VideoPrivacySet' 1256 $ref: '#/components/schemas/VideoPrivacySet'
1197 category: 1257 category:
1198 description: Video category 1258 description: Video category
1199 type: string 1259 type: integer
1260 example: 4
1200 licence: 1261 licence:
1201 description: Video licence 1262 description: Video licence
1202 type: string 1263 type: string
1203 language: 1264 language:
1204 description: Video language 1265 description: Video language
1205 type: string 1266 type: integer
1267 example: 2
1206 description: 1268 description:
1207 description: Video description 1269 description: Video description
1208 type: string 1270 type: string
@@ -1214,7 +1276,7 @@ paths:
1214 type: string 1276 type: string
1215 nsfw: 1277 nsfw:
1216 description: Whether or not this video contains sensitive content 1278 description: Whether or not this video contains sensitive content
1217 type: string 1279 type: boolean
1218 name: 1280 name:
1219 description: Video name 1281 description: Video name
1220 type: string 1282 type: string
@@ -1230,7 +1292,7 @@ paths:
1230 maxLength: 30 1292 maxLength: 30
1231 commentsEnabled: 1293 commentsEnabled:
1232 description: Enable or disable comments for this video 1294 description: Enable or disable comments for this video
1233 type: string 1295 type: boolean
1234 originallyPublishedAt: 1296 originallyPublishedAt:
1235 description: Date when the content was originally published 1297 description: Date when the content was originally published
1236 type: string 1298 type: string
@@ -1380,6 +1442,59 @@ paths:
1380 tags: 1442 tags:
1381 - Video Abuses 1443 - Video Abuses
1382 parameters: 1444 parameters:
1445 - name: id
1446 in: query
1447 description: only list the report with this id
1448 schema:
1449 type: integer
1450 - name: predefinedReason
1451 in: query
1452 description: predefined reason the listed reports should contain
1453 schema:
1454 type: string
1455 enum:
1456 - violentOrAbusive
1457 - hatefulOrAbusive
1458 - spamOrMisleading
1459 - privacy
1460 - rights
1461 - serverRules
1462 - thumbnails
1463 - captions
1464 - name: search
1465 in: query
1466 description: plain search that will match with video titles, reporter names and more
1467 schema:
1468 type: string
1469 - name: state
1470 in: query
1471 description: 'The video playlist privacy (Pending = `1`, Rejected = `2`, Accepted = `3`)'
1472 schema:
1473 type: integer
1474 enum:
1475 - 1
1476 - 2
1477 - 3
1478 - name: searchReporter
1479 in: query
1480 description: only list reports of a specific reporter
1481 schema:
1482 type: string
1483 - name: searchReportee
1484 description: only list reports of a specific reportee
1485 in: query
1486 schema:
1487 type: string
1488 - name: searchVideo
1489 in: query
1490 description: only list reports of a specific video
1491 schema:
1492 type: string
1493 - name: searchVideoChannel
1494 in: query
1495 description: only list reports of a specific video channel
1496 schema:
1497 type: string
1383 - $ref: '#/components/parameters/start' 1498 - $ref: '#/components/parameters/start'
1384 - $ref: '#/components/parameters/count' 1499 - $ref: '#/components/parameters/count'
1385 - $ref: '#/components/parameters/abusesSort' 1500 - $ref: '#/components/parameters/abusesSort'
@@ -1412,6 +1527,7 @@ paths:
1412 reason: 1527 reason:
1413 description: Reason why the user reports this video 1528 description: Reason why the user reports this video
1414 type: string 1529 type: string
1530 minLength: 4
1415 predefinedReasons: 1531 predefinedReasons:
1416 description: Reason categories that help triage reports 1532 description: Reason categories that help triage reports
1417 type: array 1533 type: array
@@ -1429,14 +1545,18 @@ paths:
1429 startAt: 1545 startAt:
1430 type: integer 1546 type: integer
1431 description: Timestamp in the video that marks the beginning of the report 1547 description: Timestamp in the video that marks the beginning of the report
1548 minimum: 0
1432 endAt: 1549 endAt:
1433 type: integer 1550 type: integer
1434 description: Timestamp in the video that marks the ending of the report 1551 description: Timestamp in the video that marks the ending of the report
1552 minimum: 0
1435 required: 1553 required:
1436 - reason 1554 - reason
1437 responses: 1555 responses:
1438 '204': 1556 '204':
1439 description: successful operation 1557 description: successful operation
1558 '400':
1559 description: incorrect request parameters
1440 '/videos/{id}/abuse/{abuseId}': 1560 '/videos/{id}/abuse/{abuseId}':
1441 put: 1561 put:
1442 summary: Update an abuse 1562 summary: Update an abuse
@@ -1446,11 +1566,6 @@ paths:
1446 - moderator 1566 - moderator
1447 tags: 1567 tags:
1448 - Video Abuses 1568 - Video Abuses
1449 responses:
1450 '204':
1451 description: successful operation
1452 '404':
1453 description: video abuse not found
1454 parameters: 1569 parameters:
1455 - $ref: '#/components/parameters/idOrUUID' 1570 - $ref: '#/components/parameters/idOrUUID'
1456 - $ref: '#/components/parameters/abuseId' 1571 - $ref: '#/components/parameters/abuseId'
@@ -1464,23 +1579,28 @@ paths:
1464 $ref: '#/components/schemas/VideoAbuseStateSet' 1579 $ref: '#/components/schemas/VideoAbuseStateSet'
1465 moderationComment: 1580 moderationComment:
1466 type: string 1581 type: string
1467 description: 'Update the comment of the video abuse for other admin/moderators' 1582 description: Update the report comment visible only to the moderation team
1583 responses:
1584 '204':
1585 description: successful operation
1586 '404':
1587 description: video abuse not found
1468 delete: 1588 delete:
1589 tags:
1590 - Video Abuses
1469 summary: Delete an abuse 1591 summary: Delete an abuse
1470 security: 1592 security:
1471 - OAuth2: 1593 - OAuth2:
1472 - admin 1594 - admin
1473 - moderator 1595 - moderator
1474 tags: 1596 parameters:
1475 - Video Abuses 1597 - $ref: '#/components/parameters/idOrUUID'
1598 - $ref: '#/components/parameters/abuseId'
1476 responses: 1599 responses:
1477 '204': 1600 '204':
1478 description: successful operation 1601 description: successful operation
1479 '404': 1602 '404':
1480 description: block not found 1603 description: block not found
1481 parameters:
1482 - $ref: '#/components/parameters/idOrUUID'
1483 - $ref: '#/components/parameters/abuseId'
1484 1604
1485 '/videos/{id}/blacklist': 1605 '/videos/{id}/blacklist':
1486 post: 1606 post:
@@ -1521,6 +1641,24 @@ paths:
1521 - admin 1641 - admin
1522 - moderator 1642 - moderator
1523 parameters: 1643 parameters:
1644 - name: type
1645 in: query
1646 description: >
1647 list only blocks that match this type:
1648
1649 - `1`: manual block
1650
1651 - `2`: automatic block that needs review
1652 schema:
1653 type: integer
1654 enum:
1655 - 1
1656 - 2
1657 - name: search
1658 in: query
1659 description: plain search that will match with video titles, and more
1660 schema:
1661 type: string
1524 - $ref: '#/components/parameters/start' 1662 - $ref: '#/components/parameters/start'
1525 - $ref: '#/components/parameters/count' 1663 - $ref: '#/components/parameters/count'
1526 - $ref: '#/components/parameters/blacklistsSort' 1664 - $ref: '#/components/parameters/blacklistsSort'
@@ -1530,9 +1668,15 @@ paths:
1530 content: 1668 content:
1531 application/json: 1669 application/json:
1532 schema: 1670 schema:
1533 type: array 1671 type: object
1534 items: 1672 properties:
1535 $ref: '#/components/schemas/VideoBlacklist' 1673 total:
1674 type: integer
1675 example: 1
1676 data:
1677 type: array
1678 items:
1679 $ref: '#/components/schemas/VideoBlacklist'
1536 /videos/{id}/captions: 1680 /videos/{id}/captions:
1537 get: 1681 get:
1538 summary: List captions of a video 1682 summary: List captions of a video
@@ -1550,6 +1694,7 @@ paths:
1550 properties: 1694 properties:
1551 total: 1695 total:
1552 type: integer 1696 type: integer
1697 example: 1
1553 data: 1698 data:
1554 type: array 1699 type: array
1555 items: 1700 items:
@@ -1607,9 +1752,15 @@ paths:
1607 content: 1752 content:
1608 application/json: 1753 application/json:
1609 schema: 1754 schema:
1610 type: array 1755 type: object
1611 items: 1756 properties:
1612 $ref: '#/components/schemas/VideoChannel' 1757 total:
1758 type: integer
1759 example: 1
1760 data:
1761 type: array
1762 items:
1763 $ref: '#/components/schemas/VideoChannel'
1613 post: 1764 post:
1614 summary: Create a video channel 1765 summary: Create a video channel
1615 security: 1766 security:
@@ -1706,6 +1857,9 @@ paths:
1706 type: array 1857 type: array
1707 items: 1858 items:
1708 type: string 1859 type: string
1860 examples:
1861 nightly:
1862 externalValue: https://peertube2.cpy.re/api/v1/video-playlists/privacies
1709 1863
1710 /video-playlists: 1864 /video-playlists:
1711 get: 1865 get:
@@ -1722,9 +1876,15 @@ paths:
1722 content: 1876 content:
1723 application/json: 1877 application/json:
1724 schema: 1878 schema:
1725 type: array 1879 type: object
1726 items: 1880 properties:
1727 $ref: '#/components/schemas/VideoPlaylist' 1881 total:
1882 type: integer
1883 example: 1
1884 data:
1885 type: array
1886 items:
1887 $ref: '#/components/schemas/VideoPlaylist'
1728 post: 1888 post:
1729 summary: Create a video playlist 1889 summary: Create a video playlist
1730 description: 'If the video playlist is set as public, the videoChannelId is mandatory.' 1890 description: 'If the video playlist is set as public, the videoChannelId is mandatory.'
@@ -2003,6 +2163,14 @@ paths:
2003 - Accounts 2163 - Accounts
2004 parameters: 2164 parameters:
2005 - $ref: '#/components/parameters/name' 2165 - $ref: '#/components/parameters/name'
2166 - name: withStats
2167 in: query
2168 description: include view statistics for the last 30 days (only if authentified as the account user)
2169 schema:
2170 type: boolean
2171 - $ref: '#/components/parameters/start'
2172 - $ref: '#/components/parameters/count'
2173 - $ref: '#/components/parameters/sort'
2006 responses: 2174 responses:
2007 '200': 2175 '200':
2008 description: successful operation 2176 description: successful operation
@@ -2142,6 +2310,12 @@ paths:
2142 responses: 2310 responses:
2143 '204': 2311 '204':
2144 description: successful operation 2312 description: successful operation
2313 '403':
2314 description: cannot remove comment of another user
2315 '404':
2316 description: comment or video does not exist
2317 '409':
2318 description: comment is already deleted
2145 '/videos/{id}/rate': 2319 '/videos/{id}/rate':
2146 put: 2320 put:
2147 summary: Like/dislike a video 2321 summary: Like/dislike a video
@@ -2160,6 +2334,16 @@ paths:
2160 - Search 2334 - Search
2161 summary: Search videos 2335 summary: Search videos
2162 parameters: 2336 parameters:
2337 - name: search
2338 in: query
2339 required: true
2340 allowEmptyValue: false
2341 description: >
2342 String to search. If the user can make a remote URI search, and the string is an URI then the
2343 PeerTube instance will fetch the remote object and add it to its database. Then,
2344 you can use the REST API to fetch the complete video information and interact with it.
2345 schema:
2346 type: string
2163 - $ref: '#/components/parameters/categoryOneOf' 2347 - $ref: '#/components/parameters/categoryOneOf'
2164 - $ref: '#/components/parameters/tagsOneOf' 2348 - $ref: '#/components/parameters/tagsOneOf'
2165 - $ref: '#/components/parameters/tagsAllOf' 2349 - $ref: '#/components/parameters/tagsAllOf'
@@ -2172,52 +2356,37 @@ paths:
2172 - $ref: '#/components/parameters/count' 2356 - $ref: '#/components/parameters/count'
2173 - $ref: '#/components/parameters/searchTarget' 2357 - $ref: '#/components/parameters/searchTarget'
2174 - $ref: '#/components/parameters/videosSearchSort' 2358 - $ref: '#/components/parameters/videosSearchSort'
2175 - name: search
2176 in: query
2177 required: true
2178 description: >
2179 String to search. If the user can make a remote URI search, and the string is an URI then the
2180 PeerTube instance will fetch the remote object and add it to its database. Then,
2181 you can use the REST API to fetch the complete video information and interact with it.
2182 schema:
2183 type: string
2184 - name: startDate 2359 - name: startDate
2185 in: query 2360 in: query
2186 required: true
2187 description: Get videos that are published after this date 2361 description: Get videos that are published after this date
2188 schema: 2362 schema:
2189 type: string 2363 type: string
2190 format: date-time 2364 format: date-time
2191 - name: endDate 2365 - name: endDate
2192 in: query 2366 in: query
2193 required: true
2194 description: Get videos that are published before this date 2367 description: Get videos that are published before this date
2195 schema: 2368 schema:
2196 type: string 2369 type: string
2197 format: date-time 2370 format: date-time
2198 - name: originallyPublishedStartDate 2371 - name: originallyPublishedStartDate
2199 in: query 2372 in: query
2200 required: true
2201 description: Get videos that are originally published after this date 2373 description: Get videos that are originally published after this date
2202 schema: 2374 schema:
2203 type: string 2375 type: string
2204 format: date-time 2376 format: date-time
2205 - name: originallyPublishedEndDate 2377 - name: originallyPublishedEndDate
2206 in: query 2378 in: query
2207 required: true
2208 description: Get videos that are originally published before this date 2379 description: Get videos that are originally published before this date
2209 schema: 2380 schema:
2210 type: string 2381 type: string
2211 format: date-time 2382 format: date-time
2212 - name: durationMin 2383 - name: durationMin
2213 in: query 2384 in: query
2214 required: true
2215 description: Get videos that have this minimum duration 2385 description: Get videos that have this minimum duration
2216 schema: 2386 schema:
2217 type: integer 2387 type: integer
2218 - name: durationMax 2388 - name: durationMax
2219 in: query 2389 in: query
2220 required: true
2221 description: Get videos that have this maximum duration 2390 description: Get videos that have this maximum duration
2222 schema: 2391 schema:
2223 type: integer 2392 type: integer
@@ -2234,10 +2403,6 @@ paths:
2234 - Search 2403 - Search
2235 summary: Search channels 2404 summary: Search channels
2236 parameters: 2405 parameters:
2237 - $ref: '#/components/parameters/start'
2238 - $ref: '#/components/parameters/count'
2239 - $ref: '#/components/parameters/searchTarget'
2240 - $ref: '#/components/parameters/sort'
2241 - name: search 2406 - name: search
2242 in: query 2407 in: query
2243 required: true 2408 required: true
@@ -2247,6 +2412,10 @@ paths:
2247 you can use the REST API to fetch the complete channel information and interact with it. 2412 you can use the REST API to fetch the complete channel information and interact with it.
2248 schema: 2413 schema:
2249 type: string 2414 type: string
2415 - $ref: '#/components/parameters/start'
2416 - $ref: '#/components/parameters/count'
2417 - $ref: '#/components/parameters/searchTarget'
2418 - $ref: '#/components/parameters/sort'
2250 responses: 2419 responses:
2251 '200': 2420 '200':
2252 description: successful operation 2421 description: successful operation
@@ -2286,6 +2455,7 @@ paths:
2286 properties: 2455 properties:
2287 accountName: 2456 accountName:
2288 type: string 2457 type: string
2458 example: chocobozzz@example.org
2289 description: account to block, in the form `username@domain` 2459 description: account to block, in the form `username@domain`
2290 required: 2460 required:
2291 - accountName 2461 - accountName
@@ -2342,11 +2512,12 @@ paths:
2342 schema: 2512 schema:
2343 type: object 2513 type: object
2344 properties: 2514 properties:
2345 accountName: 2515 host:
2346 type: string 2516 type: string
2517 format: hostname
2347 description: server domain to block 2518 description: server domain to block
2348 required: 2519 required:
2349 - accountName 2520 - host
2350 responses: 2521 responses:
2351 '200': 2522 '200':
2352 description: successful operation 2523 description: successful operation
@@ -2367,6 +2538,7 @@ paths:
2367 description: server domain to unblock 2538 description: server domain to unblock
2368 schema: 2539 schema:
2369 type: string 2540 type: string
2541 format: hostname
2370 responses: 2542 responses:
2371 '201': 2543 '201':
2372 description: successful operation 2544 description: successful operation
@@ -2387,6 +2559,7 @@ paths:
2387 description: server domain to mirror 2559 description: server domain to mirror
2388 schema: 2560 schema:
2389 type: string 2561 type: string
2562 format: hostname
2390 requestBody: 2563 requestBody:
2391 content: 2564 content:
2392 application/json: 2565 application/json:
@@ -2447,7 +2620,7 @@ paths:
2447 type: object 2620 type: object
2448 properties: 2621 properties:
2449 videoId: 2622 videoId:
2450 type: string 2623 type: integer
2451 required: 2624 required:
2452 - videoId 2625 - videoId
2453 responses: 2626 responses:
@@ -2584,6 +2757,9 @@ paths:
2584 description: 'limit listing to a specific video channel' 2757 description: 'limit listing to a specific video channel'
2585 schema: 2758 schema:
2586 type: string 2759 type: string
2760 - $ref: '#/components/parameters/sort'
2761 - $ref: '#/components/parameters/nsfw'
2762 - $ref: '#/components/parameters/filter'
2587 responses: 2763 responses:
2588 '204': 2764 '204':
2589 description: successful operation 2765 description: successful operation
@@ -2596,6 +2772,9 @@ paths:
2596 application/xml: 2772 application/xml:
2597 schema: 2773 schema:
2598 $ref: '#/components/schemas/VideosForXML' 2774 $ref: '#/components/schemas/VideosForXML'
2775 examples:
2776 nightly:
2777 externalValue: https://peertube2.cpy.re/feeds/videos.xml?filter=local
2599 application/rss+xml: 2778 application/rss+xml:
2600 schema: 2779 schema:
2601 $ref: '#/components/schemas/VideosForXML' 2780 $ref: '#/components/schemas/VideosForXML'
@@ -2687,6 +2866,7 @@ paths:
2687 properties: 2866 properties:
2688 npmName: 2867 npmName:
2689 type: string 2868 type: string
2869 example: peertube-plugin-auth-ldap
2690 required: 2870 required:
2691 - npmName 2871 - npmName
2692 additionalProperties: false 2872 additionalProperties: false
@@ -2719,6 +2899,7 @@ paths:
2719 properties: 2899 properties:
2720 npmName: 2900 npmName:
2721 type: string 2901 type: string
2902 example: peertube-plugin-auth-ldap
2722 required: 2903 required:
2723 - npmName 2904 - npmName
2724 additionalProperties: false 2905 additionalProperties: false
@@ -2752,6 +2933,8 @@ paths:
2752 properties: 2933 properties:
2753 npmName: 2934 npmName:
2754 type: string 2935 type: string
2936 description: name of the plugin/theme in its package.json
2937 example: peertube-plugin-auth-ldap
2755 required: 2938 required:
2756 - npmName 2939 - npmName
2757 responses: 2940 responses:
@@ -2768,11 +2951,7 @@ paths:
2768 - OAuth2: 2951 - OAuth2:
2769 - admin 2952 - admin
2770 parameters: 2953 parameters:
2771 - name: npmName 2954 - $ref: '#/components/parameters/npmName'
2772 in: path
2773 required: true
2774 schema:
2775 type: string
2776 responses: 2955 responses:
2777 '200': 2956 '200':
2778 description: successful operation 2957 description: successful operation
@@ -2791,11 +2970,7 @@ paths:
2791 - OAuth2: 2970 - OAuth2:
2792 - admin 2971 - admin
2793 parameters: 2972 parameters:
2794 - name: npmName 2973 - $ref: '#/components/parameters/npmName'
2795 in: path
2796 required: true
2797 schema:
2798 type: string
2799 requestBody: 2974 requestBody:
2800 content: 2975 content:
2801 application/json: 2976 application/json:
@@ -2816,11 +2991,7 @@ paths:
2816 - Plugins 2991 - Plugins
2817 summary: Get a plugin's public settings 2992 summary: Get a plugin's public settings
2818 parameters: 2993 parameters:
2819 - name: npmName 2994 - $ref: '#/components/parameters/npmName'
2820 in: path
2821 required: true
2822 schema:
2823 type: string
2824 responses: 2995 responses:
2825 '200': 2996 '200':
2826 description: successful operation 2997 description: successful operation
@@ -2840,11 +3011,7 @@ paths:
2840 - OAuth2: 3011 - OAuth2:
2841 - admin 3012 - admin
2842 parameters: 3013 parameters:
2843 - name: npmName 3014 - $ref: '#/components/parameters/npmName'
2844 in: path
2845 required: true
2846 schema:
2847 type: string
2848 responses: 3015 responses:
2849 '200': 3016 '200':
2850 description: successful operation 3017 description: successful operation
@@ -2871,6 +3038,7 @@ components:
2871 description: Offset used to paginate results 3038 description: Offset used to paginate results
2872 schema: 3039 schema:
2873 type: integer 3040 type: integer
3041 minimum: 0
2874 count: 3042 count:
2875 name: count 3043 name: count
2876 in: query 3044 in: query
@@ -2878,15 +3046,17 @@ components:
2878 description: "Number of items to return" 3046 description: "Number of items to return"
2879 schema: 3047 schema:
2880 type: integer 3048 type: integer
3049 default: 15
2881 maximum: 100 3050 maximum: 100
2882 minimum: 1 3051 minimum: 1
2883 sort: 3052 sort:
2884 name: sort 3053 name: sort
2885 in: query 3054 in: query
2886 required: false 3055 required: false
2887 description: Sort column (`-createdAt` for example) 3056 description: Sort column
2888 schema: 3057 schema:
2889 type: string 3058 type: string
3059 example: -createdAt
2890 searchTarget: 3060 searchTarget:
2891 name: searchTarget 3061 name: searchTarget
2892 in: query 3062 in: query
@@ -2896,11 +3066,11 @@ components:
2896 3066
2897 3067
2898 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service. 3068 **Warning**: If you choose to make an index search, PeerTube will get results from a third party service.
2899 It means the instance may not know the objects you fetched. If you want to load video/channel information: 3069 It means the instance may not yet know the objects you fetched. If you want to load video/channel information:
2900 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint), 3070 * If the current user has the ability to make a remote URI search (this information is available in the config endpoint),
2901 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database. 3071 then reuse the search API to make a search using the object URI so PeerTube instance fetches the remote object and fill its database.
2902 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it 3072 After that, you can use the classic REST API endpoints to fetch the complete object or interact with it
2903 * If the current user has not the ability to make a remote URI search, then redirect the user on the origin instance or fetch 3073 * If the current user doesn't have the ability to make a remote URI search, then redirect the user on the origin instance or fetch
2904 the data from the origin instance API 3074 the data from the origin instance API
2905 schema: 3075 schema:
2906 type: string 3076 type: string
@@ -2998,11 +3168,10 @@ components:
2998 name: name 3168 name: name
2999 in: path 3169 in: path
3000 required: true 3170 required: true
3001 description: >- 3171 description: The name of the account
3002 The name of the account (`chocobozzz` or `chocobozzz@example.org` for
3003 example)
3004 schema: 3172 schema:
3005 type: string 3173 type: string
3174 example: chocobozzz | chocobozzz@example.org
3006 id: 3175 id:
3007 name: id 3176 name: id
3008 in: path 3177 in: path
@@ -3010,13 +3179,21 @@ components:
3010 description: The user id 3179 description: The user id
3011 schema: 3180 schema:
3012 type: integer 3181 type: integer
3182 minimum: 0
3183 example: 42
3013 idOrUUID: 3184 idOrUUID:
3014 name: id 3185 name: id
3015 in: path 3186 in: path
3016 required: true 3187 required: true
3017 description: The object id or uuid 3188 description: The object id or uuid
3018 schema: 3189 schema:
3019 type: string 3190 oneOf:
3191 - type: integer
3192 minimum: 0
3193 example: 42
3194 - type: string
3195 format: uuid
3196 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3020 playlistElementId: 3197 playlistElementId:
3021 name: playlistElementId 3198 name: playlistElementId
3022 in: path 3199 in: path
@@ -3042,16 +3219,18 @@ components:
3042 name: channelHandle 3219 name: channelHandle
3043 in: path 3220 in: path
3044 required: true 3221 required: true
3045 description: "The video channel handle (example: 'my_username@example.com' or 'my_username')" 3222 description: The video channel handle
3046 schema: 3223 schema:
3047 type: string 3224 type: string
3225 example: my_username | my_username@example.com
3048 subscriptionHandle: 3226 subscriptionHandle:
3049 name: subscriptionHandle 3227 name: subscriptionHandle
3050 in: path 3228 in: path
3051 required: true 3229 required: true
3052 description: "The subscription handle (example: 'my_username@example.com' or 'my_username')" 3230 description: The subscription handle
3053 schema: 3231 schema:
3054 type: string 3232 type: string
3233 example: my_username | my_username@example.com
3055 threadId: 3234 threadId:
3056 name: threadId 3235 name: threadId
3057 in: path 3236 in: path
@@ -3070,7 +3249,7 @@ components:
3070 name: categoryOneOf 3249 name: categoryOneOf
3071 in: query 3250 in: query
3072 required: false 3251 required: false
3073 description: category id of the video (see /videos/categories) 3252 description: category id of the video (see [/videos/categories](#tag/Video/paths/~1videos~1categories/get))
3074 schema: 3253 schema:
3075 oneOf: 3254 oneOf:
3076 - type: integer 3255 - type: integer
@@ -3109,7 +3288,7 @@ components:
3109 name: languageOneOf 3288 name: languageOneOf
3110 in: query 3289 in: query
3111 required: false 3290 required: false
3112 description: language id of the video (see /videos/languages). Use `_unknown` to filter on videos that don't have a video language 3291 description: language id of the video (see [/videos/languages](#tag/Video/paths/~1videos~1languages/get)). Use `_unknown` to filter on videos that don't have a video language
3113 schema: 3292 schema:
3114 oneOf: 3293 oneOf:
3115 - type: string 3294 - type: string
@@ -3122,7 +3301,7 @@ components:
3122 name: licenceOneOf 3301 name: licenceOneOf
3123 in: query 3302 in: query
3124 required: false 3303 required: false
3125 description: licence id of the video (see /videos/licences) 3304 description: licence id of the video (see [/videos/licences](#tag/Video/paths/~1videos~1licences/get))
3126 schema: 3305 schema:
3127 oneOf: 3306 oneOf:
3128 - type: integer 3307 - type: integer
@@ -3174,6 +3353,15 @@ components:
3174 type: array 3353 type: array
3175 items: 3354 items:
3176 type: string 3355 type: string
3356 format: uri
3357 npmName:
3358 name: npmName
3359 in: path
3360 required: true
3361 description: name of the plugin/theme on npmjs.com or in its package.json
3362 schema:
3363 type: string
3364 example: peertube-plugin-auth-ldap
3177 securitySchemes: 3365 securitySchemes:
3178 OAuth2: 3366 OAuth2:
3179 description: > 3367 description: >
@@ -3306,14 +3494,17 @@ components:
3306 - serverRules 3494 - serverRules
3307 - thumbnails 3495 - thumbnails
3308 - captions 3496 - captions
3497 example: [spamOrMisleading]
3309 3498
3310 VideoResolutionConstant: 3499 VideoResolutionConstant:
3311 properties: 3500 properties:
3312 id: 3501 id:
3313 type: integer 3502 type: integer
3314 description: 'Video resolution (240, 360, 720 ...)' 3503 description: 'Video resolution (240, 360, 720 ...)'
3504 example: 240
3315 label: 3505 label:
3316 type: string 3506 type: string
3507 example: 240p
3317 VideoScheduledUpdate: 3508 VideoScheduledUpdate:
3318 properties: 3509 properties:
3319 privacy: 3510 privacy:
@@ -3334,8 +3525,10 @@ components:
3334 type: string 3525 type: string
3335 url: 3526 url:
3336 type: string 3527 type: string
3528 format: url
3337 host: 3529 host:
3338 type: string 3530 type: string
3531 format: hostname
3339 avatar: 3532 avatar:
3340 nullable: true 3533 nullable: true
3341 allOf: 3534 allOf:
@@ -3350,8 +3543,10 @@ components:
3350 type: string 3543 type: string
3351 url: 3544 url:
3352 type: string 3545 type: string
3546 format: url
3353 host: 3547 host:
3354 type: string 3548 type: string
3549 format: hostname
3355 avatar: 3550 avatar:
3356 nullable: true 3551 nullable: true
3357 allOf: 3552 allOf:
@@ -3379,16 +3574,21 @@ components:
3379 description: 'Video file size in bytes' 3574 description: 'Video file size in bytes'
3380 torrentUrl: 3575 torrentUrl:
3381 type: string 3576 type: string
3577 format: url
3382 torrentDownloadUrl: 3578 torrentDownloadUrl:
3383 type: string 3579 type: string
3580 format: url
3384 fileUrl: 3581 fileUrl:
3385 type: string 3582 type: string
3583 format: url
3386 fileDownloadUrl: 3584 fileDownloadUrl:
3387 type: string 3585 type: string
3586 format: url
3388 fps: 3587 fps:
3389 type: number 3588 type: number
3390 metadataUrl: 3589 metadataUrl:
3391 type: string 3590 type: string
3591 format: url
3392 VideoStreamingPlaylists: 3592 VideoStreamingPlaylists:
3393 properties: 3593 properties:
3394 id: 3594 id:
@@ -3400,8 +3600,10 @@ components:
3400 description: 'Playlist type (HLS = `1`)' 3600 description: 'Playlist type (HLS = `1`)'
3401 playlistUrl: 3601 playlistUrl:
3402 type: string 3602 type: string
3603 format: url
3403 segmentsSha256Url: 3604 segmentsSha256Url:
3404 type: string 3605 type: string
3606 format: url
3405 files: 3607 files:
3406 type: array 3608 type: array
3407 items: 3609 items:
@@ -3413,28 +3615,38 @@ components:
3413 properties: 3615 properties:
3414 baseUrl: 3616 baseUrl:
3415 type: string 3617 type: string
3618 format: url
3416 VideoInfo: 3619 VideoInfo:
3417 properties: 3620 properties:
3418 id: 3621 id:
3419 type: integer 3622 type: integer
3420 uuid: 3623 uuid:
3421 type: string 3624 type: string
3625 format: uuid
3626 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3422 name: 3627 name:
3423 type: string 3628 type: string
3424 Video: 3629 Video:
3425 properties: 3630 properties:
3426 id: 3631 id:
3427 type: integer 3632 type: integer
3633 example: 8
3428 uuid: 3634 uuid:
3429 type: string 3635 type: string
3636 format: uuid
3637 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3430 createdAt: 3638 createdAt:
3431 type: string 3639 type: string
3640 format: date-time
3432 publishedAt: 3641 publishedAt:
3433 type: string 3642 type: string
3643 format: date-time
3434 updatedAt: 3644 updatedAt:
3435 type: string 3645 type: string
3646 format: date-time
3436 originallyPublishedAt: 3647 originallyPublishedAt:
3437 type: string 3648 type: string
3649 format: date-time
3438 category: 3650 category:
3439 $ref: '#/components/schemas/VideoConstantNumber' 3651 $ref: '#/components/schemas/VideoConstantNumber'
3440 licence: 3652 licence:
@@ -3447,22 +3659,30 @@ components:
3447 type: string 3659 type: string
3448 duration: 3660 duration:
3449 type: integer 3661 type: integer
3662 example: 1419
3450 isLocal: 3663 isLocal:
3451 type: boolean 3664 type: boolean
3452 name: 3665 name:
3453 type: string 3666 type: string
3667 example: What is PeerTube?
3454 thumbnailPath: 3668 thumbnailPath:
3455 type: string 3669 type: string
3670 example: /static/thumbnails/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3456 previewPath: 3671 previewPath:
3457 type: string 3672 type: string
3673 example: /static/previews/a65bc12f-9383-462e-81ae-8207e8b434ee.jpg
3458 embedPath: 3674 embedPath:
3459 type: string 3675 type: string
3676 example: /videos/embed/a65bc12f-9383-462e-81ae-8207e8b434ee
3460 views: 3677 views:
3461 type: integer 3678 type: integer
3679 example: 1337
3462 likes: 3680 likes:
3463 type: integer 3681 type: integer
3682 example: 42
3464 dislikes: 3683 dislikes:
3465 type: integer 3684 type: integer
3685 example: 7
3466 nsfw: 3686 nsfw:
3467 type: boolean 3687 type: boolean
3468 waitTranscoding: 3688 waitTranscoding:
@@ -3499,6 +3719,7 @@ components:
3499 type: string 3719 type: string
3500 support: 3720 support:
3501 type: string 3721 type: string
3722 example: Please support my work on <insert crowdfunding plateform>! <3
3502 channel: 3723 channel:
3503 $ref: '#/components/schemas/VideoChannel' 3724 $ref: '#/components/schemas/VideoChannel'
3504 account: 3725 account:
@@ -3507,6 +3728,7 @@ components:
3507 type: array 3728 type: array
3508 items: 3729 items:
3509 type: string 3730 type: string
3731 example: [flowers, gardening]
3510 files: 3732 files:
3511 type: array 3733 type: array
3512 items: 3734 items:
@@ -3519,6 +3741,7 @@ components:
3519 type: array 3741 type: array
3520 items: 3742 items:
3521 type: string 3743 type: string
3744 format: url
3522 streamingPlaylists: 3745 streamingPlaylists:
3523 type: array 3746 type: array
3524 items: 3747 items:
@@ -3529,8 +3752,14 @@ components:
3529 type: integer 3752 type: integer
3530 fileUrl: 3753 fileUrl:
3531 type: string 3754 type: string
3755 format: url
3532 strategy: 3756 strategy:
3533 type: string 3757 type: string
3758 enum:
3759 - manual
3760 - most-views
3761 - trending
3762 - recently-added
3534 size: 3763 size:
3535 type: integer 3764 type: integer
3536 createdAt: 3765 createdAt:
@@ -3550,8 +3779,11 @@ components:
3550 type: string 3779 type: string
3551 url: 3780 url:
3552 type: string 3781 type: string
3782 format: url
3553 uuid: 3783 uuid:
3554 type: string 3784 type: string
3785 format: uuid
3786 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3555 redundancies: 3787 redundancies:
3556 type: object 3788 type: object
3557 properties: 3789 properties:
@@ -3574,37 +3806,42 @@ components:
3574 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)' 3806 description: 'The video import state (Pending = `1`, Success = `2`, Failed = `3`)'
3575 label: 3807 label:
3576 type: string 3808 type: string
3809 example: Pending
3577 VideoImport: 3810 VideoImport:
3578 properties: 3811 properties:
3579 id: 3812 id:
3580 type: integer 3813 type: integer
3814 example: 2
3581 targetUrl: 3815 targetUrl:
3582 type: string 3816 type: string
3817 format: url
3818 example: https://framatube.org/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d
3583 magnetUri: 3819 magnetUri:
3584 type: string 3820 type: string
3821 format: uri
3822 example: magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F9c9de5e8-0a1e-484a-b099-e80766180a6d-240.torrent&xt=urn:btih:38b4747ff788b30bf61f59d1965cd38f9e48e01f&dn=What+is+PeerTube%3F&tr=wss%3A%2F%2Fframatube.org%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F9c9de5e8-0a1e-484a-b099-e80766180a6d-240.mp4
3585 torrentName: 3823 torrentName:
3586 type: string 3824 type: string
3587 state: 3825 state:
3588 type: object 3826 $ref: '#/components/schemas/VideoImportStateConstant'
3589 properties:
3590 id:
3591 $ref: '#/components/schemas/VideoImportStateConstant'
3592 label:
3593 type: string
3594 error: 3827 error:
3595 type: string 3828 type: string
3596 createdAt: 3829 createdAt:
3597 type: string 3830 type: string
3831 format: date-time
3598 updatedAt: 3832 updatedAt:
3599 type: string 3833 type: string
3834 format: date-time
3600 video: 3835 video:
3601 $ref: '#/components/schemas/Video' 3836 $ref: '#/components/schemas/Video'
3602 VideoAbuse: 3837 VideoAbuse:
3603 properties: 3838 properties:
3604 id: 3839 id:
3605 type: integer 3840 type: integer
3841 example: 7
3606 reason: 3842 reason:
3607 type: string 3843 type: string
3844 example: The video is a spam
3608 predefinedReasons: 3845 predefinedReasons:
3609 $ref: '#/components/schemas/VideoAbusePredefinedReasons' 3846 $ref: '#/components/schemas/VideoAbusePredefinedReasons'
3610 reporterAccount: 3847 reporterAccount:
@@ -3613,6 +3850,7 @@ components:
3613 $ref: '#/components/schemas/VideoAbuseStateConstant' 3850 $ref: '#/components/schemas/VideoAbuseStateConstant'
3614 moderationComment: 3851 moderationComment:
3615 type: string 3852 type: string
3853 example: Decided to ban the server since it spams us regularly
3616 video: 3854 video:
3617 type: object 3855 type: object
3618 properties: 3856 properties:
@@ -3622,8 +3860,11 @@ components:
3622 type: string 3860 type: string
3623 uuid: 3861 uuid:
3624 type: string 3862 type: string
3863 format: uuid
3864 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3625 createdAt: 3865 createdAt:
3626 type: string 3866 type: string
3867 format: date-time
3627 VideoBlacklist: 3868 VideoBlacklist:
3628 properties: 3869 properties:
3629 id: 3870 id:
@@ -3632,12 +3873,16 @@ components:
3632 type: integer 3873 type: integer
3633 createdAt: 3874 createdAt:
3634 type: string 3875 type: string
3876 format: date-time
3635 updatedAt: 3877 updatedAt:
3636 type: string 3878 type: string
3879 format: date-time
3637 name: 3880 name:
3638 type: string 3881 type: string
3639 uuid: 3882 uuid:
3640 type: string 3883 type: string
3884 format: uuid
3885 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3641 description: 3886 description:
3642 type: string 3887 type: string
3643 duration: 3888 duration:
@@ -3665,18 +3910,24 @@ components:
3665 type: integer 3910 type: integer
3666 uuid: 3911 uuid:
3667 type: string 3912 type: string
3913 format: uuid
3914 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3668 VideoPlaylist: 3915 VideoPlaylist:
3669 properties: 3916 properties:
3670 id: 3917 id:
3671 type: integer 3918 type: integer
3672 createdAt: 3919 createdAt:
3673 type: string 3920 type: string
3921 format: date-time
3674 updatedAt: 3922 updatedAt:
3675 type: string 3923 type: string
3924 format: date-time
3676 description: 3925 description:
3677 type: string 3926 type: string
3678 uuid: 3927 uuid:
3679 type: string 3928 type: string
3929 format: uuid
3930 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
3680 displayName: 3931 displayName:
3681 type: string 3932 type: string
3682 isLocal: 3933 isLocal:
@@ -3699,6 +3950,7 @@ components:
3699 type: integer 3950 type: integer
3700 url: 3951 url:
3701 type: string 3952 type: string
3953 format: url
3702 text: 3954 text:
3703 type: string 3955 type: string
3704 threadId: 3956 threadId:
@@ -3709,8 +3961,10 @@ components:
3709 type: integer 3961 type: integer
3710 createdAt: 3962 createdAt:
3711 type: string 3963 type: string
3964 format: date-time
3712 updatedAt: 3965 updatedAt:
3713 type: string 3966 type: string
3967 format: date-time
3714 totalRepliesFromVideoAuthor: 3968 totalRepliesFromVideoAuthor:
3715 type: integer 3969 type: integer
3716 totalReplies: 3970 totalReplies:
@@ -3737,18 +3991,22 @@ components:
3737 type: string 3991 type: string
3738 createdAt: 3992 createdAt:
3739 type: string 3993 type: string
3994 format: date-time
3740 updatedAt: 3995 updatedAt:
3741 type: string 3996 type: string
3997 format: date-time
3742 ActorInfo: 3998 ActorInfo:
3743 properties: 3999 properties:
3744 id: 4000 id:
3745 type: integer 4001 type: integer
4002 example: 11
3746 name: 4003 name:
3747 type: string 4004 type: string
3748 displayName: 4005 displayName:
3749 type: string 4006 type: string
3750 host: 4007 host:
3751 type: string 4008 type: string
4009 format: hostname
3752 avatar: 4010 avatar:
3753 nullable: true 4011 nullable: true
3754 type: object 4012 type: object
@@ -3759,20 +4017,25 @@ components:
3759 properties: 4017 properties:
3760 id: 4018 id:
3761 type: integer 4019 type: integer
4020 example: 11
3762 url: 4021 url:
3763 type: string 4022 type: string
4023 format: url
3764 name: 4024 name:
3765 type: string 4025 type: string
3766 host: 4026 host:
3767 type: string 4027 type: string
4028 format: hostname
3768 followingCount: 4029 followingCount:
3769 type: integer 4030 type: integer
3770 followersCount: 4031 followersCount:
3771 type: integer 4032 type: integer
3772 createdAt: 4033 createdAt:
3773 type: string 4034 type: string
4035 format: date-time
3774 updatedAt: 4036 updatedAt:
3775 type: string 4037 type: string
4038 format: date-time
3776 avatar: 4039 avatar:
3777 $ref: '#/components/schemas/Avatar' 4040 $ref: '#/components/schemas/Avatar'
3778 Account: 4041 Account:
@@ -3781,73 +4044,17 @@ components:
3781 - properties: 4044 - properties:
3782 userId: 4045 userId:
3783 type: string 4046 type: string
4047 example: 2
3784 displayName: 4048 displayName:
3785 type: string 4049 type: string
3786 description: 4050 description:
3787 type: string 4051 type: string
3788 User:
3789 properties:
3790 id:
3791 type: integer
3792 username:
3793 type: string
3794 email:
3795 type: string
3796 theme:
3797 type: string
3798 description: 'Theme enabled by this user'
3799 emailVerified:
3800 type: boolean
3801 description: 'Has the user confirmed their email address?'
3802 nsfwPolicy:
3803 $ref: '#/components/schemas/NSFWPolicy'
3804 webtorrentEnabled:
3805 type: boolean
3806 autoPlayVideo:
3807 type: boolean
3808 description: 'Automatically start playing the video on the watch page'
3809 role:
3810 $ref: '#/components/schemas/UserRole'
3811 roleLabel:
3812 type: string
3813 enum:
3814 - User
3815 - Moderator
3816 - Administrator
3817 videoQuota:
3818 type: integer
3819 videoQuotaDaily:
3820 type: integer
3821 videosCount:
3822 type: integer
3823 videoAbusesCount:
3824 type: integer
3825 videoAbusesAcceptedCount:
3826 type: integer
3827 videoAbusesCreatedCount:
3828 type: integer
3829 videoCommentsCount:
3830 type: integer
3831 noInstanceConfigWarningModal:
3832 type: boolean
3833 noWelcomeModal:
3834 type: boolean
3835 blocked:
3836 type: boolean
3837 blockedReason:
3838 type: string
3839 createdAt:
3840 type: string
3841 account:
3842 $ref: '#/components/schemas/Account'
3843 videoChannels:
3844 type: array
3845 items:
3846 $ref: '#/components/schemas/VideoChannel'
3847 UserWatchingVideo: 4052 UserWatchingVideo:
3848 properties: 4053 properties:
3849 currentTime: 4054 currentTime:
3850 type: integer 4055 type: integer
4056 description: timestamp within the video, in seconds
4057 example: 5
3851 ServerConfig: 4058 ServerConfig:
3852 properties: 4059 properties:
3853 instance: 4060 instance:
@@ -4044,6 +4251,7 @@ components:
4044 properties: 4251 properties:
4045 indexUrl: 4252 indexUrl:
4046 type: string 4253 type: string
4254 format: url
4047 ServerConfigAbout: 4255 ServerConfigAbout:
4048 properties: 4256 properties:
4049 instance: 4257 instance:
@@ -4125,6 +4333,7 @@ components:
4125 properties: 4333 properties:
4126 email: 4334 email:
4127 type: string 4335 type: string
4336 format: email
4128 contactForm: 4337 contactForm:
4129 type: object 4338 type: object
4130 properties: 4339 properties:
@@ -4223,38 +4432,61 @@ components:
4223 - accepted 4432 - accepted
4224 createdAt: 4433 createdAt:
4225 type: string 4434 type: string
4435 format: date-time
4226 updatedAt: 4436 updatedAt:
4227 type: string 4437 type: string
4438 format: date-time
4228 Job: 4439 Job:
4229 properties: 4440 properties:
4230 id: 4441 id:
4231 type: integer 4442 type: integer
4443 minimum: 0
4444 example: 42
4232 state: 4445 state:
4233 type: string 4446 type: string
4234 enum: 4447 enum:
4235 - pending 4448 - active
4236 - processing 4449 - completed
4237 - error 4450 - failed
4238 - success 4451 - waiting
4239 category: 4452 - delayed
4453 type:
4240 type: string 4454 type: string
4241 enum: 4455 enum:
4242 - transcoding 4456 - activitypub-http-unicast
4243 - activitypub-http 4457 - activitypub-http-broadcast
4244 handlerName: 4458 - activitypub-http-fetcher
4245 type: string 4459 - activitypub-follow
4246 handlerInputData: 4460 - video-file-import
4247 type: string 4461 - video-transcoding
4462 - email
4463 - video-import
4464 - videos-views
4465 - activitypub-refresher
4466 - video-redundancy
4467 data:
4468 type: object
4469 additionalProperties: true
4470 error:
4471 type: object
4472 additionalProperties: true
4248 createdAt: 4473 createdAt:
4249 type: string 4474 type: string
4250 updatedAt: 4475 format: date-time
4476 finishedOn:
4251 type: string 4477 type: string
4478 format: date-time
4479 processedOn:
4480 type: string
4481 format: date-time
4252 AddUserResponse: 4482 AddUserResponse:
4253 properties: 4483 properties:
4254 id: 4484 id:
4255 type: integer 4485 type: integer
4256 uuid: 4486 uuid:
4257 type: string 4487 type: string
4488 format: uuid
4489 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4258 VideoUploadResponse: 4490 VideoUploadResponse:
4259 properties: 4491 properties:
4260 video: 4492 video:
@@ -4262,14 +4494,19 @@ components:
4262 properties: 4494 properties:
4263 id: 4495 id:
4264 type: integer 4496 type: integer
4497 example: 8
4265 uuid: 4498 uuid:
4266 type: string 4499 type: string
4500 format: uuid
4501 example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
4267 CommentThreadResponse: 4502 CommentThreadResponse:
4268 properties: 4503 properties:
4269 total: 4504 total:
4270 type: integer 4505 type: integer
4506 example: 1
4271 data: 4507 data:
4272 type: array 4508 type: array
4509 maxItems: 100
4273 items: 4510 items:
4274 $ref: '#/components/schemas/VideoComment' 4511 $ref: '#/components/schemas/VideoComment'
4275 CommentThreadPostResponse: 4512 CommentThreadPostResponse:
@@ -4280,31 +4517,103 @@ components:
4280 properties: 4517 properties:
4281 total: 4518 total:
4282 type: integer 4519 type: integer
4520 example: 1
4283 data: 4521 data:
4284 type: array 4522 type: array
4523 maxItems: 100
4285 items: 4524 items:
4286 $ref: '#/components/schemas/Video' 4525 $ref: '#/components/schemas/Video'
4526 User:
4527 properties:
4528 id:
4529 type: integer
4530 readOnly: true
4531 username:
4532 type: string
4533 description: The user username
4534 minLength: 1
4535 maxLength: 50
4536 email:
4537 type: string
4538 format: email
4539 description: The user email
4540 theme:
4541 type: string
4542 description: Theme enabled by this user
4543 emailVerified:
4544 type: boolean
4545 description: Has the user confirmed their email address?
4546 nsfwPolicy:
4547 $ref: '#/components/schemas/NSFWPolicy'
4548 webtorrentEnabled:
4549 type: boolean
4550 description: Enable P2P in the player
4551 autoPlayVideo:
4552 type: boolean
4553 description: Automatically start playing the video on the watch page
4554 role:
4555 $ref: '#/components/schemas/UserRole'
4556 roleLabel:
4557 type: string
4558 enum:
4559 - User
4560 - Moderator
4561 - Administrator
4562 videoQuota:
4563 type: integer
4564 description: The user video quota
4565 videoQuotaDaily:
4566 type: integer
4567 description: The user daily video quota
4568 videosCount:
4569 type: integer
4570 videoAbusesCount:
4571 type: integer
4572 videoAbusesAcceptedCount:
4573 type: integer
4574 videoAbusesCreatedCount:
4575 type: integer
4576 videoCommentsCount:
4577 type: integer
4578 noInstanceConfigWarningModal:
4579 type: boolean
4580 noWelcomeModal:
4581 type: boolean
4582 blocked:
4583 type: boolean
4584 blockedReason:
4585 type: string
4586 createdAt:
4587 type: string
4588 account:
4589 $ref: '#/components/schemas/Account'
4590 videoChannels:
4591 type: array
4592 items:
4593 $ref: '#/components/schemas/VideoChannel'
4287 AddUser: 4594 AddUser:
4288 properties: 4595 properties:
4289 username: 4596 username:
4290 type: string 4597 type: string
4291 description: 'The user username' 4598 description: The user username
4292 minLength: 1 4599 minLength: 1
4293 maxLength: 50 4600 maxLength: 50
4294 password: 4601 password:
4295 type: string 4602 type: string
4296 description: 'The user password. If the smtp server is configured, you can leave empty and an email will be sent' 4603 format: password
4604 description: The user password. If the smtp server is configured, you can leave empty and an email will be sent
4297 minLength: 6 4605 minLength: 6
4298 maxLength: 255 4606 maxLength: 255
4299 email: 4607 email:
4300 type: string 4608 type: string
4301 description: 'The user email. MUST be in the format of an email address.' 4609 format: email
4610 description: The user email
4302 videoQuota: 4611 videoQuota:
4303 type: string 4612 type: integer
4304 description: 'The user video quota' 4613 description: The user video quota
4305 videoQuotaDaily: 4614 videoQuotaDaily:
4306 type: string 4615 type: integer
4307 description: 'The user daily video quota' 4616 description: The user daily video quota
4308 role: 4617 role:
4309 $ref: '#/components/schemas/UserRole' 4618 $ref: '#/components/schemas/UserRole'
4310 required: 4619 required:
@@ -4318,16 +4627,17 @@ components:
4318 properties: 4627 properties:
4319 id: 4628 id:
4320 type: string 4629 type: string
4321 description: 'The user id' 4630 description: The user id
4322 email: 4631 email:
4323 type: string 4632 type: string
4324 description: 'The updated email of the user' 4633 format: email
4634 description: The updated email of the user
4325 videoQuota: 4635 videoQuota:
4326 type: string 4636 type: integer
4327 description: 'The updated video quota of the user' 4637 description: The updated video quota of the user
4328 videoQuotaDaily: 4638 videoQuotaDaily:
4329 type: string 4639 type: integer
4330 description: 'The updated daily video quota of the user' 4640 description: The updated daily video quota of the user
4331 role: 4641 role:
4332 $ref: '#/components/schemas/UserRole' 4642 $ref: '#/components/schemas/UserRole'
4333 required: 4643 required:
@@ -4340,16 +4650,24 @@ components:
4340 properties: 4650 properties:
4341 password: 4651 password:
4342 type: string 4652 type: string
4343 description: 'Your new password' 4653 format: password
4654 description: Your new password
4655 minLength: 6
4656 maxLength: 255
4344 email: 4657 email:
4345 type: string 4658 type: string
4346 description: 'Your new email' 4659 format: email
4660 description: Your new email
4347 displayNSFW: 4661 displayNSFW:
4348 type: string 4662 type: string
4349 description: 'Your new displayNSFW' 4663 description: Your new displayNSFW
4664 enum:
4665 - 'true'
4666 - 'false'
4667 - both
4350 autoPlayVideo: 4668 autoPlayVideo:
4351 type: string 4669 type: boolean
4352 description: 'Your new autoPlayVideo' 4670 description: Your new autoPlayVideo
4353 required: 4671 required:
4354 - password 4672 - password
4355 - email 4673 - email
@@ -4359,10 +4677,10 @@ components:
4359 properties: 4677 properties:
4360 id: 4678 id:
4361 type: string 4679 type: string
4362 description: 'Id of the video' 4680 description: Id of the video
4363 rating: 4681 rating:
4364 type: number 4682 type: number
4365 description: 'Rating of the video' 4683 description: Rating of the video
4366 required: 4684 required:
4367 - id 4685 - id
4368 - rating 4686 - rating
@@ -4380,26 +4698,37 @@ components:
4380 properties: 4698 properties:
4381 username: 4699 username:
4382 type: string 4700 type: string
4383 description: 'The username of the user' 4701 description: The username of the user
4702 minLength: 1
4703 maxLength: 50
4704 pattern: '/^[a-z0-9._]{1,50}$/'
4384 password: 4705 password:
4385 type: string 4706 type: string
4386 description: 'The password of the user' 4707 format: password
4708 description: The password of the user
4709 minLength: 6
4710 maxLength: 255
4387 email: 4711 email:
4388 type: string 4712 type: string
4389 description: 'The email of the user' 4713 format: email
4714 description: The email of the user
4390 displayName: 4715 displayName:
4391 type: string 4716 type: string
4392 description: 'The user display name' 4717 description: The user display name
4718 minLength: 1
4719 maxLength: 120
4393 channel: 4720 channel:
4394 type: object 4721 type: object
4395 properties: 4722 properties:
4396 name: 4723 name:
4397 type: string 4724 type: string
4398 description: 'The name for the default channel' 4725 description: The name for the default channel
4726 pattern: '/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\\-_.:]+$/'
4399 displayName: 4727 displayName:
4400 type: string 4728 type: string
4401 description: 'The display name for the default channel' 4729 description: The display name for the default channel
4402 4730 minLength: 1
4731 maxLength: 120
4403 required: 4732 required:
4404 - username 4733 - username
4405 - password 4734 - password
@@ -4453,6 +4782,7 @@ components:
4453 properties: 4782 properties:
4454 url: 4783 url:
4455 type: string 4784 type: string
4785 format: url
4456 xml: 4786 xml:
4457 attribute: true 4787 attribute: true
4458 fileSize: 4788 fileSize:
@@ -4491,6 +4821,7 @@ components:
4491 properties: 4821 properties:
4492 link: 4822 link:
4493 type: string 4823 type: string
4824 format: url
4494 guid: 4825 guid:
4495 type: string 4826 type: string
4496 pubDate: 4827 pubDate:
@@ -4512,6 +4843,7 @@ components:
4512 properties: 4843 properties:
4513 link: 4844 link:
4514 type: string 4845 type: string
4846 format: url
4515 description: video watch page URL 4847 description: video watch page URL
4516 guid: 4848 guid:
4517 type: string 4849 type: string
@@ -4548,6 +4880,7 @@ components:
4548 properties: 4880 properties:
4549 url: 4881 url:
4550 type: string 4882 type: string
4883 format: url
4551 description: video embed path, relative to the canonical URL domain (MRSS) 4884 description: video embed path, relative to the canonical URL domain (MRSS)
4552 xml: 4885 xml:
4553 attribute: true 4886 attribute: true
@@ -4556,6 +4889,7 @@ components:
4556 properties: 4889 properties:
4557 url: 4890 url:
4558 type: string 4891 type: string
4892 format: url
4559 description: video watch path, relative to the canonical URL domain (MRSS) 4893 description: video watch path, relative to the canonical URL domain (MRSS)
4560 xml: 4894 xml:
4561 attribute: true 4895 attribute: true
@@ -4564,6 +4898,7 @@ components:
4564 properties: 4898 properties:
4565 url: 4899 url:
4566 type: string 4900 type: string
4901 format: url
4567 xml: 4902 xml:
4568 attribute: true 4903 attribute: true
4569 height: 4904 height:
@@ -4591,6 +4926,7 @@ components:
4591 properties: 4926 properties:
4592 url: 4927 url:
4593 type: string 4928 type: string
4929 format: url
4594 xml: 4930 xml:
4595 attribute: true 4931 attribute: true
4596 type: 4932 type:
@@ -4614,8 +4950,11 @@ components:
4614 type: integer 4950 type: integer
4615 description: > 4951 description: >
4616 Notification type 4952 Notification type
4953
4617 - `0` NONE 4954 - `0` NONE
4955
4618 - `1` WEB 4956 - `1` WEB
4957
4619 - `2` EMAIL 4958 - `2` EMAIL
4620 enum: 4959 enum:
4621 - 0 4960 - 0
@@ -4629,19 +4968,33 @@ components:
4629 type: integer 4968 type: integer
4630 description: > 4969 description: >
4631 Notification type, following the `UserNotificationType` enum: 4970 Notification type, following the `UserNotificationType` enum:
4971
4632 - `1` NEW_VIDEO_FROM_SUBSCRIPTION 4972 - `1` NEW_VIDEO_FROM_SUBSCRIPTION
4973
4633 - `2` NEW_COMMENT_ON_MY_VIDEO 4974 - `2` NEW_COMMENT_ON_MY_VIDEO
4975
4634 - `3` NEW_VIDEO_ABUSE_FOR_MODERATORS 4976 - `3` NEW_VIDEO_ABUSE_FOR_MODERATORS
4977
4635 - `4` BLACKLIST_ON_MY_VIDEO 4978 - `4` BLACKLIST_ON_MY_VIDEO
4979
4636 - `5` UNBLACKLIST_ON_MY_VIDEO 4980 - `5` UNBLACKLIST_ON_MY_VIDEO
4981
4637 - `6` MY_VIDEO_PUBLISHED 4982 - `6` MY_VIDEO_PUBLISHED
4983
4638 - `7` MY_VIDEO_IMPORT_SUCCESS 4984 - `7` MY_VIDEO_IMPORT_SUCCESS
4985
4639 - `8` MY_VIDEO_IMPORT_ERROR 4986 - `8` MY_VIDEO_IMPORT_ERROR
4987
4640 - `9` NEW_USER_REGISTRATION 4988 - `9` NEW_USER_REGISTRATION
4989
4641 - `10` NEW_FOLLOW 4990 - `10` NEW_FOLLOW
4991
4642 - `11` COMMENT_MENTION 4992 - `11` COMMENT_MENTION
4993
4643 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS 4994 - `12` VIDEO_AUTO_BLACKLIST_FOR_MODERATORS
4995
4644 - `13` NEW_INSTANCE_FOLLOWER 4996 - `13` NEW_INSTANCE_FOLLOWER
4997
4645 - `14` AUTO_INSTANCE_FOLLOWING 4998 - `14` AUTO_INSTANCE_FOLLOWING
4646 read: 4999 read:
4647 type: boolean 5000 type: boolean
@@ -4667,9 +5020,11 @@ components:
4667 nullable: true 5020 nullable: true
4668 magnetUri: 5021 magnetUri:
4669 type: string 5022 type: string
5023 format: uri
4670 nullable: true 5024 nullable: true
4671 targetUri: 5025 targetUri:
4672 type: string 5026 type: string
5027 format: uri
4673 nullable: true 5028 nullable: true
4674 comment: 5029 comment:
4675 nullable: true 5030 nullable: true
@@ -4733,6 +5088,7 @@ components:
4733 type: string 5088 type: string
4734 host: 5089 host:
4735 type: string 5090 type: string
5091 format: hostname
4736 createdAt: 5092 createdAt:
4737 type: string 5093 type: string
4738 format: date-time 5094 format: date-time
@@ -4743,33 +5099,45 @@ components:
4743 properties: 5099 properties:
4744 total: 5100 total:
4745 type: integer 5101 type: integer
5102 example: 1
4746 data: 5103 data:
4747 type: array 5104 type: array
5105 maxItems: 100
4748 items: 5106 items:
4749 $ref: '#/components/schemas/Notification' 5107 $ref: '#/components/schemas/Notification'
4750 Plugin: 5108 Plugin:
4751 properties: 5109 properties:
4752 name: 5110 name:
4753 type: string 5111 type: string
5112 example: peertube-plugin-auth-ldap
4754 type: 5113 type:
4755 type: integer 5114 type: integer
5115 description: >
5116 - `1`: PLUGIN
5117
5118 - `2`: THEME
4756 enum: 5119 enum:
4757 - 1 5120 - 1
4758 - 2 5121 - 2
4759 latestVersion: 5122 latestVersion:
4760 type: string 5123 type: string
5124 example: 0.0.3
4761 version: 5125 version:
4762 type: string 5126 type: string
5127 example: 0.0.1
4763 enabled: 5128 enabled:
4764 type: boolean 5129 type: boolean
4765 uninstalled: 5130 uninstalled:
4766 type: boolean 5131 type: boolean
4767 peertubeEngine: 5132 peertubeEngine:
4768 type: string 5133 type: string
5134 example: 2.2.0
4769 description: 5135 description:
4770 type: string 5136 type: string
4771 homepage: 5137 homepage:
4772 type: string 5138 type: string
5139 format: url
5140 example: https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap
4773 settings: 5141 settings:
4774 type: object 5142 type: object
4775 additionalProperties: true 5143 additionalProperties: true
@@ -4783,7 +5151,9 @@ components:
4783 properties: 5151 properties:
4784 total: 5152 total:
4785 type: integer 5153 type: integer
5154 example: 1
4786 data: 5155 data:
4787 type: array 5156 type: array
5157 maxItems: 100
4788 items: 5158 items:
4789 $ref: '#/components/schemas/Plugin' \ No newline at end of file 5159 $ref: '#/components/schemas/Plugin' \ No newline at end of file