]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - support/doc/api/openapi.yaml
Fix bad RSS descriptions when filtering videos by account or channel
[github/Chocobozzz/PeerTube.git] / support / doc / api / openapi.yaml
1 swagger: '2.0'
2 info:
3 title: PeerTube
4 version: 1.0.0-beta
5 description: Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.
6 host: peertube.example.com
7 securityDefinitions:
8 OAuth2:
9 description: 'In the header: *Authorization: Bearer mytoken*'
10 type: oauth2
11 flow: password
12 # Not implemented yet
13 # authorizationUrl: https://example.com/oauth/authorize
14 tokenUrl: https://peertube.example.com/api/v1/users/token
15 basePath: '/api/v1'
16 schemes:
17 - https
18 paths:
19 '/accounts/{name}':
20 get:
21 tags:
22 - Accounts
23 consumes:
24 - application/json
25 produces:
26 - application/json
27 parameters:
28 - name: name
29 in: path
30 required: true
31 type: string
32 description: 'The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for example)'
33 - name: start
34 in: query
35 required: false
36 type: number
37 description: 'starting page'
38 - name: stop
39 in: query
40 required: false
41 type: number
42 description: 'stopping page'
43 - name: sort
44 in: query
45 required: false
46 type: number
47 description: 'sorting'
48 responses:
49 '200':
50 description: successful operation
51 schema:
52 $ref: '#/definitions/Account'
53 '/accounts/{name}/videos':
54 get:
55 tags:
56 - Accounts
57 consumes:
58 - application/json
59 produces:
60 - application/json
61 parameters:
62 - name: name
63 in: path
64 required: true
65 type: string
66 description: 'The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for example)'
67 responses:
68 '200':
69 description: successful operation
70 schema:
71 $ref: '#/definitions/Video'
72 /accounts:
73 get:
74 tags:
75 - Accounts
76 consumes:
77 - application/json
78 produces:
79 - application/json
80 responses:
81 '200':
82 description: successful operation
83 schema:
84 type: array
85 items:
86 $ref: '#/definitions/Account'
87 /config:
88 get:
89 tags:
90 - Config
91 consumes:
92 - application/json
93 produces:
94 - application/json
95 responses:
96 '200':
97 description: successful operation
98 schema:
99 $ref: '#/definitions/ServerConfig'
100 /feeds/videos.{format}:
101 get:
102 tags:
103 - Feeds
104 produces:
105 - application/atom+xml
106 - application/rss+xml
107 - application/json
108 parameters:
109 - name: format
110 in: path
111 required: true
112 type: string
113 enum: [ 'xml', 'atom', 'json']
114 default: 'xml'
115 description: 'The format expected (xml defaults to RSS 2.0, atom to ATOM 1.0 and json to JSON FEED 1.0'
116 - name: accountId
117 in: query
118 required: false
119 type: number
120 description: 'The id of the local account to filter to (beware, users IDs and not actors IDs which will return empty feeds'
121 - name: accountName
122 in: query
123 required: false
124 type: string
125 description: 'The name of the local account to filter to'
126 responses:
127 '200':
128 description: successful operation
129 /jobs:
130 get:
131 security:
132 - OAuth2: [ ]
133 tags:
134 - Job
135 consumes:
136 - application/json
137 produces:
138 - application/json
139 parameters:
140 - name: state
141 in: path
142 required: true
143 type: string
144 description: 'The id of the account'
145 - name: start
146 in: query
147 required: false
148 type: number
149 description: 'starting page'
150 - name: count
151 in: query
152 required: false
153 type: number
154 description: ''
155 - name: sort
156 in: query
157 required: false
158 type: number
159 description: 'sorting'
160 responses:
161 '200':
162 description: successful operation
163 schema:
164 type: array
165 items:
166 $ref: '#/definitions/Job'
167 '/server/following/{host}':
168 delete:
169 security:
170 - OAuth2: [ ]
171 tags:
172 - ServerFollowing
173 consumes:
174 - application/json
175 produces:
176 - application/json
177 parameters:
178 - name: host
179 in: path
180 required: true
181 type: string
182 description: 'The host to unfollow '
183 responses:
184 '201':
185 description: successful operation
186 /server/followers:
187 get:
188 tags:
189 - ServerFollowing
190 consumes:
191 - application/json
192 produces:
193 - application/json
194 parameters:
195 - name: start
196 in: query
197 required: false
198 type: number
199 description: 'starting page'
200 - name: stop
201 in: query
202 required: false
203 type: number
204 description: 'stopping page'
205 - name: sort
206 in: query
207 required: false
208 type: number
209 description: 'sorting'
210 responses:
211 '200':
212 description: successful operation
213 schema:
214 type: array
215 items:
216 $ref: '#/definitions/Follow'
217 /server/following:
218 get:
219 tags:
220 - ServerFollowing
221 consumes:
222 - application/json
223 produces:
224 - application/json
225 parameters:
226 - name: start
227 in: query
228 required: false
229 type: number
230 description: 'starting page'
231 - name: stop
232 in: query
233 required: false
234 type: number
235 description: 'stopping page'
236 - name: sort
237 in: query
238 required: false
239 type: number
240 description: 'sorting'
241 responses:
242 '200':
243 description: successful operation
244 schema:
245 type: array
246 items:
247 $ref: '#/definitions/Follow'
248 post:
249 security:
250 - OAuth2: [ ]
251 tags:
252 - ServerFollowing
253 consumes:
254 - application/json
255 produces:
256 - application/json
257 parameters:
258 - in: body
259 name: body
260 schema:
261 $ref: '#/definitions/Follow'
262 responses:
263 '204':
264 description: successful operation
265 /users:
266 post:
267 security:
268 - OAuth2: [ ]
269 tags:
270 - User
271 consumes:
272 - application/json
273 produces:
274 - application/json
275 parameters:
276 - in: body
277 name: body
278 required: true
279 description: 'User to create'
280 schema:
281 $ref: '#/definitions/AddUser'
282 responses:
283 '200':
284 description: successful operation
285 schema:
286 $ref: '#/definitions/AddUserResponse'
287 get:
288 security:
289 - OAuth2: [ ]
290 tags:
291 - User
292 consumes:
293 - application/json
294 produces:
295 - application/json
296 parameters:
297 - name: start
298 in: query
299 required: false
300 type: number
301 description: 'starting page'
302 - name: stop
303 in: query
304 required: false
305 type: number
306 description: 'stopping page'
307 - name: sort
308 in: query
309 required: false
310 type: number
311 description: 'sorting'
312 responses:
313 '200':
314 description: successful operation
315 schema:
316 type: array
317 items:
318 $ref: '#/definitions/User'
319 '/users/{id}':
320 delete:
321 security:
322 - OAuth2: [ ]
323 tags:
324 - User
325 consumes:
326 - application/json
327 produces:
328 - application/json
329 parameters:
330 - name: id
331 in: path
332 required: true
333 type: string
334 description: 'The user id '
335 responses:
336 '204':
337 description: successful operation
338 get:
339 security:
340 - OAuth2: [ ]
341 tags:
342 - User
343 consumes:
344 - application/json
345 produces:
346 - application/json
347 parameters:
348 - name: id
349 in: path
350 required: true
351 type: string
352 description: 'The user id '
353 responses:
354 '200':
355 description: successful operation
356 schema:
357 $ref: '#/definitions/User'
358 put:
359 security:
360 - OAuth2: [ ]
361 tags:
362 - User
363 consumes:
364 - application/json
365 produces:
366 - application/json
367 parameters:
368 - name: id
369 in: path
370 required: true
371 type: string
372 description: 'The user id '
373 - in: body
374 name: body
375 required: true
376 schema:
377 $ref: '#/definitions/UpdateUser'
378 responses:
379 '204':
380 description: successful operation
381 /users/me:
382 get:
383 security:
384 - OAuth2: [ ]
385 tags:
386 - User
387 consumes:
388 - application/json
389 produces:
390 - application/json
391 responses:
392 '200':
393 description: successful operation
394 schema:
395 type: array
396 items:
397 $ref: '#/definitions/User'
398 put:
399 security:
400 - OAuth2: [ ]
401 tags:
402 - User
403 consumes:
404 - application/json
405 produces:
406 - application/json
407 parameters:
408 - in: body
409 name: body
410 required: true
411 schema:
412 $ref: '#/definitions/UpdateMe'
413 responses:
414 '204':
415 description: successful operation
416 /users/me/video-quota-used:
417 get:
418 security:
419 - OAuth2: [ ]
420 tags:
421 - User
422 consumes:
423 - application/json
424 produces:
425 - application/json
426 parameters: []
427 responses:
428 '200':
429 description: successful operation
430 schema:
431 type: number
432 '/users/me/videos/{videoId}/rating':
433 get:
434 security:
435 - OAuth2: [ ]
436 tags:
437 - User
438 consumes:
439 - application/json
440 produces:
441 - application/json
442 parameters:
443 - name: videoId
444 in: path
445 required: true
446 type: string
447 description: 'The video id '
448 responses:
449 '200':
450 description: successful operation
451 schema:
452 $ref: '#/definitions/GetMeVideoRating'
453 /users/me/videos:
454 get:
455 security:
456 - OAuth2: [ ]
457 tags:
458 - User
459 consumes:
460 - application/json
461 produces:
462 - application/json
463 parameters:
464 - name: start
465 in: query
466 required: false
467 type: number
468 description: 'starting page'
469 - name: stop
470 in: query
471 required: false
472 type: number
473 description: 'stopping page'
474 - name: sort
475 in: query
476 required: false
477 type: number
478 description: 'sorting'
479 responses:
480 '200':
481 description: successful operation
482 schema:
483 type: array
484 items:
485 $ref: '#/definitions/Video'
486 /users/register:
487 post:
488 tags:
489 - User
490 consumes:
491 - application/json
492 produces:
493 - application/json
494 parameters:
495 - in: body
496 name: body
497 required: true
498 schema:
499 $ref: '#/definitions/RegisterUser'
500 responses:
501 '204':
502 description: successful operation
503 /users/me/avatar/pick:
504 post:
505 security:
506 - OAuth2: [ ]
507 tags:
508 - User
509 consumes:
510 - multipart/form-data
511 produces:
512 - application/json
513 parameters:
514 - in: formData
515 name: avatarfile
516 type: file
517 description: The file to upload.
518 responses:
519 '200':
520 description: successful operation
521 schema:
522 $ref: '#/definitions/Avatar'
523 /videos:
524 get:
525 tags:
526 - Video
527 consumes:
528 - application/json
529 produces:
530 - application/json
531 parameters:
532 - name: start
533 in: query
534 required: false
535 type: number
536 description: 'starting page'
537 - name: stop
538 in: query
539 required: false
540 type: number
541 description: 'stopping page'
542 - name: sort
543 in: query
544 required: false
545 type: number
546 description: 'sorting'
547 responses:
548 '200':
549 description: successful operation
550 schema:
551 type: array
552 items:
553 $ref: '#/definitions/Video'
554 /videos/categories:
555 get:
556 tags:
557 - Video
558 consumes:
559 - application/json
560 produces:
561 - application/json
562 responses:
563 '200':
564 description: successful operation
565 schema:
566 type: array
567 items:
568 type: string
569 /videos/licences:
570 get:
571 tags:
572 - Video
573 consumes:
574 - application/json
575 produces:
576 - application/json
577 responses:
578 '200':
579 description: successful operation
580 schema:
581 type: array
582 items:
583 type: string
584 /videos/languages:
585 get:
586 tags:
587 - Video
588 consumes:
589 - application/json
590 produces:
591 - application/json
592 responses:
593 '200':
594 description: successful operation
595 schema:
596 type: array
597 items:
598 type: string
599 /videos/privacies:
600 get:
601 tags:
602 - Video
603 consumes:
604 - application/json
605 produces:
606 - application/json
607 responses:
608 '200':
609 description: successful operation
610 schema:
611 type: array
612 items:
613 type: string
614 /videos/search:
615 get:
616 tags:
617 - Video
618 consumes:
619 - application/json
620 produces:
621 - application/json
622 parameters:
623 - name: start
624 in: query
625 required: false
626 type: number
627 description: 'starting page'
628 - name: stop
629 in: query
630 required: false
631 type: number
632 description: 'stopping page'
633 - name: sort
634 in: query
635 required: false
636 type: number
637 description: 'sorting'
638 responses:
639 '200':
640 description: successful operation
641 schema:
642 type: array
643 items:
644 $ref: '#/definitions/Video'
645 "/videos/{id}":
646 put:
647 security:
648 - OAuth2: [ ]
649 tags:
650 - Video
651 consumes:
652 - multipart/form-data
653 produces:
654 - application/json
655 parameters:
656 - name: id
657 in: path
658 required: true
659 type: string
660 description: 'The video id'
661 - name: thumbnailfile
662 in: formData
663 type: file
664 description: 'Video thumbnail file'
665 - name: previewfile
666 in: formData
667 type: file
668 description: 'Video preview file'
669 - name: category
670 in: formData
671 type: number
672 description: 'Video category'
673 - name: licence
674 in: formData
675 type: number
676 description: 'Video licence'
677 - name: language
678 in: formData
679 type: string
680 description: 'Video language'
681 - name: description
682 in: formData
683 type: string
684 description: 'Video description'
685 - name: waitTranscoding
686 in: formData
687 type: boolean
688 description: 'Whether or not we wait transcoding before publish the video'
689 - name: support
690 in: formData
691 type: string
692 description: 'Text describing how to support the video uploader'
693 - name: nsfw
694 in: formData
695 type: boolean
696 description: 'Whether or not this video contains sensitive content'
697 - name: name
698 in: formData
699 type: string
700 description: 'Video name'
701 - name: tags
702 in: formData
703 type: string[]
704 description: 'Video tags'
705 - name: commentsEnabled
706 in: formData
707 type: boolean
708 description: 'Enable or disable comments for this video'
709 - name: privacy
710 in: formData
711 type: string
712 enum: [Public, Unlisted]
713 description: 'Video privacy'
714 responses:
715 '200':
716 description: successful operation
717 schema:
718 $ref: '#/definitions/Video'
719 get:
720 tags:
721 - Video
722 consumes:
723 - application/json
724 produces:
725 - application/json
726 parameters:
727 - name: id
728 in: path
729 required: true
730 type: string
731 description: 'The video id '
732 responses:
733 '200':
734 description: successful operation
735 schema:
736 $ref: '#/definitions/Video'
737 delete:
738 security:
739 - OAuth2: [ ]
740 tags:
741 - Video
742 consumes:
743 - application/json
744 produces:
745 - application/json
746 parameters:
747 - name: id
748 in: path
749 required: true
750 type: string
751 description: 'The video id '
752 responses:
753 '204':
754 description: successful operation
755 "/videos/{id}/description":
756 get:
757 tags:
758 - Video
759 consumes:
760 - application/json
761 produces:
762 - application/json
763 parameters:
764 - name: id
765 in: path
766 required: true
767 type: string
768 description: 'The video id '
769 responses:
770 '200':
771 description: successful operation
772 schema:
773 type: string
774 "/videos/{id}/views":
775 post:
776 tags:
777 - Video
778 consumes:
779 - application/json
780 produces:
781 - application/json
782 parameters:
783 - name: id
784 in: path
785 required: true
786 type: string
787 description: 'The video id '
788 responses:
789 '204':
790 description: successful operation
791 /videos/upload:
792 post:
793 security:
794 - OAuth2: [ ]
795 tags:
796 - Video
797 consumes:
798 - multipart/form-data
799 produces:
800 - application/json
801 parameters:
802 - name: videofile
803 in: formData
804 type: file
805 required: true
806 description: 'Video file'
807 - name: thumbnailfile
808 in: formData
809 type: file
810 required: true
811 description: 'Video thumbnail file'
812 - name: previewfile
813 in: formData
814 type: file
815 required: true
816 description: 'Video preview file'
817 - name: category
818 in: formData
819 type: number
820 description: 'Video category'
821 - name: waitTranscoding
822 in: formData
823 type: boolean
824 description: 'Whether or not we wait transcoding before publish the video'
825 - name: licence
826 in: formData
827 type: number
828 description: 'Video licence'
829 - name: language
830 in: formData
831 type: string
832 description: 'Video language'
833 - name: description
834 in: formData
835 type: string
836 description: 'Video description'
837 - name: support
838 in: formData
839 type: string
840 description: 'Text describing how to support the video uploader'
841 - name: channelId
842 in: formData
843 required: true
844 type: number
845 description: 'Channel id that will contain this video'
846 - name: nsfw
847 in: formData
848 required: true
849 type: boolean
850 description: 'Whether or not this video contains sensitive content'
851 - name: name
852 in: formData
853 required: true
854 type: string
855 description: 'Video name'
856 - name: tags
857 in: formData
858 type: string[]
859 description: 'Video tags'
860 - name: commentsEnabled
861 in: formData
862 type: boolean
863 description: 'Enable or disable comments for this video'
864 - name: privacy
865 in: formData
866 required: true
867 type: string
868 enum: [Public, Unlisted, Private]
869 description: 'Video privacy'
870 responses:
871 '200':
872 description: successful operation
873 schema:
874 $ref: '#/definitions/VideoUploadResponse'
875 /videos/abuse:
876 get:
877 security:
878 - OAuth2: [ ]
879 tags:
880 - VideoAbuse
881 consumes:
882 - application/json
883 produces:
884 - application/json
885 parameters:
886 - name: start
887 in: query
888 required: false
889 type: number
890 description: 'starting page'
891 - name: stop
892 in: query
893 required: false
894 type: number
895 description: 'stopping page'
896 - name: sort
897 in: query
898 required: false
899 type: number
900 description: 'sorting'
901 responses:
902 '200':
903 description: successful operation
904 schema:
905 type: array
906 items:
907 $ref: '#/definitions/VideoAbuse'
908 "/videos/{id}/abuse":
909 post:
910 security:
911 - OAuth2: [ ]
912 tags:
913 - VideoAbuse
914 consumes:
915 - application/json
916 produces:
917 - application/json
918 parameters:
919 - name: id
920 in: path
921 required: true
922 type: string
923 description: 'The video id '
924 responses:
925 '204':
926 description: successful operation
927 "/videos/{videoId}/blacklist":
928 post:
929 security:
930 - OAuth2: [ ]
931 tags:
932 - VideoBlacklist
933 consumes:
934 - application/json
935 produces:
936 - application/json
937 parameters:
938 - name: videoId
939 in: path
940 required: true
941 type: string
942 description: 'The video id '
943 responses:
944 '204':
945 description: successful operation
946 delete:
947 security:
948 - OAuth2: [ ]
949 tags:
950 - VideoBlacklist
951 consumes:
952 - application/json
953 produces:
954 - application/json
955 parameters:
956 - name: videoId
957 in: path
958 required: true
959 type: string
960 description: 'The video id '
961 responses:
962 '204':
963 description: successful operation
964 /videos/blacklist:
965 get:
966 security:
967 - OAuth2: [ ]
968 tags:
969 - VideoBlacklist
970 consumes:
971 - application/json
972 produces:
973 - application/json
974 parameters:
975 - name: start
976 in: query
977 required: false
978 type: number
979 description: 'starting page'
980 - name: stop
981 in: query
982 required: false
983 type: number
984 description: 'stopping page'
985 - name: sort
986 in: query
987 required: false
988 type: number
989 description: 'sorting'
990 responses:
991 '200':
992 description: successful operation
993 schema:
994 type: array
995 items:
996 $ref: '#/definitions/VideoBlacklist'
997 /video-channels:
998 get:
999 tags:
1000 - VideoChannel
1001 consumes:
1002 - application/json
1003 produces:
1004 - application/json
1005 parameters:
1006 - name: start
1007 in: query
1008 required: false
1009 type: number
1010 description: 'starting page'
1011 - name: stop
1012 in: query
1013 required: false
1014 type: number
1015 description: 'stopping page'
1016 - name: sort
1017 in: query
1018 required: false
1019 type: number
1020 description: 'sorting'
1021 responses:
1022 '200':
1023 description: successful operation
1024 schema:
1025 type: array
1026 items:
1027 $ref: '#/definitions/VideoChannel'
1028 post:
1029 security:
1030 - OAuth2: [ ]
1031 tags:
1032 - VideoChannel
1033 consumes:
1034 - application/json
1035 produces:
1036 - application/json
1037 parameters:
1038 - in: body
1039 name: body
1040 schema:
1041 $ref: '#/definitions/VideoChannelInput'
1042 responses:
1043 '204':
1044 description: successful operation
1045 "/video-channels/{id}":
1046 get:
1047 tags:
1048 - VideoChannel
1049 consumes:
1050 - application/json
1051 produces:
1052 - application/json
1053 parameters:
1054 - name: id
1055 in: path
1056 required: true
1057 type: string
1058 description: 'The video channel id '
1059 responses:
1060 '200':
1061 description: successful operation
1062 schema:
1063 $ref: '#/definitions/VideoChannel'
1064 put:
1065 security:
1066 - OAuth2: [ ]
1067 tags:
1068 - VideoChannel
1069 consumes:
1070 - application/json
1071 produces:
1072 - application/json
1073 parameters:
1074 - name: id
1075 in: path
1076 required: true
1077 type: string
1078 description: 'The video channel id '
1079 - in: body
1080 name: body
1081 schema:
1082 $ref: '#/definitions/VideoChannelInput'
1083 responses:
1084 '204':
1085 description: successful operation
1086 delete:
1087 security:
1088 - OAuth2: [ ]
1089 tags:
1090 - VideoChannel
1091 consumes:
1092 - application/json
1093 produces:
1094 - application/json
1095 parameters:
1096 - name: id
1097 in: path
1098 required: true
1099 type: string
1100 description: 'The video channel id '
1101 responses:
1102 '204':
1103 description: successful operation
1104 "/video-channels/{id}/videos":
1105 get:
1106 tags:
1107 - VideoChannel
1108 consumes:
1109 - application/json
1110 produces:
1111 - application/json
1112 parameters:
1113 - name: id
1114 in: path
1115 required: true
1116 type: string
1117 description: 'The video channel id '
1118 responses:
1119 '200':
1120 description: successful operation
1121 schema:
1122 $ref: '#/definitions/Video'
1123 /accounts/{name}/video-channels:
1124 get:
1125 tags:
1126 - VideoChannel
1127 consumes:
1128 - application/json
1129 produces:
1130 - application/json
1131 parameters:
1132 - name: name
1133 in: path
1134 required: true
1135 type: string
1136 description: 'The name of the account (chocobozzz or chocobozzz@peertube.cpy.re for example)'
1137 responses:
1138 '200':
1139 description: successful operation
1140 schema:
1141 type: array
1142 items:
1143 $ref: '#/definitions/VideoChannel'
1144 "/videos/{videoId}/comment-threads":
1145 get:
1146 tags:
1147 - VideoComment
1148 consumes:
1149 - application/json
1150 produces:
1151 - application/json
1152 parameters:
1153 - name: videoId
1154 in: path
1155 required: true
1156 type: string
1157 description: 'The video id '
1158 - name: start
1159 in: query
1160 required: false
1161 type: number
1162 description: 'starting page'
1163 - name: stop
1164 in: query
1165 required: false
1166 type: number
1167 description: 'stopping page'
1168 - name: sort
1169 in: query
1170 required: false
1171 type: number
1172 description: 'sorting'
1173 responses:
1174 '200':
1175 description: successful operation
1176 schema:
1177 $ref: '#/definitions/CommentThreadResponse'
1178 post:
1179 security:
1180 - OAuth2: [ ]
1181 tags:
1182 - VideoComment
1183 consumes:
1184 - application/json
1185 produces:
1186 - application/json
1187 parameters:
1188 - name: videoId
1189 in: path
1190 required: true
1191 type: string
1192 description: 'The video id '
1193 responses:
1194 '200':
1195 description: successful operation
1196 schema:
1197 $ref: '#/definitions/CommentThreadPostResponse'
1198 "/videos/{videoId}/comment-threads/{threadId}":
1199 get:
1200 tags:
1201 - VideoComment
1202 consumes:
1203 - application/json
1204 produces:
1205 - application/json
1206 parameters:
1207 - name: videoId
1208 in: path
1209 required: true
1210 type: string
1211 description: 'The video id '
1212 - name: threadId
1213 in: path
1214 required: true
1215 type: string
1216 description: 'The thread id '
1217 responses:
1218 '200':
1219 description: successful operation
1220 schema:
1221 $ref: '#/definitions/VideoCommentThreadTree'
1222 "/videos/{videoId}/comments/{commentId}":
1223 post:
1224 security:
1225 - OAuth2: [ ]
1226 tags:
1227 - VideoComment
1228 consumes:
1229 - application/json
1230 produces:
1231 - application/json
1232 parameters:
1233 - name: videoId
1234 in: path
1235 required: true
1236 type: string
1237 description: 'The video id '
1238 - name: commentId
1239 in: path
1240 required: true
1241 type: string
1242 description: 'The comment id '
1243 responses:
1244 '200':
1245 description: successful operation
1246 schema:
1247 $ref: '#/definitions/CommentThreadPostResponse'
1248 delete:
1249 security:
1250 - OAuth2: [ ]
1251 tags:
1252 - VideoComment
1253 consumes:
1254 - application/json
1255 produces:
1256 - application/json
1257 parameters:
1258 - name: videoId
1259 in: path
1260 required: true
1261 type: string
1262 description: 'The video id '
1263 - name: commentId
1264 in: path
1265 required: true
1266 type: string
1267 description: 'The comment id '
1268 responses:
1269 '204':
1270 description: successful operation
1271 "/videos/{id}/rate":
1272 put:
1273 security:
1274 - OAuth2: [ ]
1275 tags:
1276 - VideoRate
1277 consumes:
1278 - application/json
1279 produces:
1280 - application/json
1281 parameters:
1282 - name: id
1283 in: path
1284 required: true
1285 type: string
1286 description: 'The video id '
1287 responses:
1288 '204':
1289 description: successful operation
1290 definitions:
1291 VideoConstantNumber:
1292 properties:
1293 id:
1294 type: number
1295 label:
1296 type: string
1297 VideoConstantString:
1298 properties:
1299 id:
1300 type: string
1301 label:
1302 type: string
1303 VideoPrivacy:
1304 type: string
1305 enum: [Public, Unlisted, Private]
1306 Video:
1307 properties:
1308 id:
1309 type: number
1310 uuid:
1311 type: string
1312 createdAt:
1313 type: string
1314 publishedAt:
1315 type: string
1316 updatedAt:
1317 type: string
1318 category:
1319 $ref: "#/definitions/VideoConstantNumber"
1320 licence:
1321 $ref: "#/definitions/VideoConstantNumber"
1322 language:
1323 $ref: "#/definitions/VideoConstantString"
1324 privacy:
1325 $ref: "#/definitions/VideoPrivacy"
1326 description:
1327 type: string
1328 duration:
1329 type: number
1330 isLocal:
1331 type: boolean
1332 name:
1333 type: string
1334 thumbnailPath:
1335 type: string
1336 previewPath:
1337 type: string
1338 embedPath:
1339 type: string
1340 views:
1341 type: number
1342 likes:
1343 type: number
1344 dislikes:
1345 type: number
1346 nsfw:
1347 type: boolean
1348 account:
1349 type: object
1350 properties:
1351 name:
1352 type: string
1353 displayName:
1354 type: string
1355 url:
1356 type: string
1357 host:
1358 type: string
1359 avatar:
1360 $ref: "#/definitions/Avatar"
1361 VideoAbuse:
1362 properties:
1363 id:
1364 type: number
1365 reason:
1366 type: string
1367 reporterAccount:
1368 $ref: "#/definitions/Account"
1369 video:
1370 type: object
1371 properties:
1372 id:
1373 type: number
1374 name:
1375 type: string
1376 uuid:
1377 type: string
1378 url:
1379 type: string
1380 createdAt:
1381 type: string
1382 VideoBlacklist:
1383 properties:
1384 id:
1385 type: number
1386 videoId:
1387 type: number
1388 createdAt:
1389 type: string
1390 updatedAt:
1391 type: string
1392 name:
1393 type: string
1394 uuid:
1395 type: string
1396 description:
1397 type: string
1398 duration:
1399 type: number
1400 views:
1401 type: number
1402 likes:
1403 type: number
1404 dislikes:
1405 type: number
1406 nsfw:
1407 type: boolean
1408 VideoChannel:
1409 properties:
1410 displayName:
1411 type: string
1412 description:
1413 type: string
1414 isLocal:
1415 type: boolean
1416 ownerAccount:
1417 type: object
1418 properties:
1419 id:
1420 type: number
1421 uuid:
1422 type: string
1423 VideoComment:
1424 properties:
1425 id:
1426 type: number
1427 url:
1428 type: string
1429 text:
1430 type: string
1431 threadId:
1432 type: number
1433 inReplyToCommentId:
1434 type: number
1435 videoId:
1436 type: number
1437 createdAt:
1438 type: string
1439 updatedAt:
1440 type: string
1441 totalReplies:
1442 type: number
1443 account:
1444 $ref: "#/definitions/Account"
1445 VideoCommentThreadTree:
1446 properties:
1447 comment:
1448 $ref: "#/definitions/VideoComment"
1449 children:
1450 type: array
1451 items:
1452 $ref: "#/definitions/VideoCommentThreadTree"
1453 Avatar:
1454 properties:
1455 path:
1456 type: string
1457 createdAt:
1458 type: string
1459 updatedAt:
1460 type: string
1461 Actor:
1462 properties:
1463 id:
1464 type: number
1465 uuid:
1466 type: string
1467 url:
1468 type: string
1469 name:
1470 type: string
1471 host:
1472 type: string
1473 followingCount:
1474 type: number
1475 followersCount:
1476 type: number
1477 createdAt:
1478 type: string
1479 updatedAt:
1480 type: string
1481 avatar:
1482 $ref: "#/definitions/Avatar"
1483 Account:
1484 allOf:
1485 - $ref: "#/definitions/Actor"
1486 - properties:
1487 displayName:
1488 type: string
1489 User:
1490 properties:
1491 id:
1492 type: number
1493 username:
1494 type: string
1495 email:
1496 type: string
1497 displayNSFW:
1498 type: boolean
1499 autoPlayVideo:
1500 type: boolean
1501 role:
1502 type: string
1503 enum: [User, Moderator, Administrator]
1504 videoQuota:
1505 type: number
1506 createdAt:
1507 type: string
1508 account:
1509 $ref: "#/definitions/Account"
1510 videoChannels:
1511 type: array
1512 items:
1513 $ref: "#/definitions/VideoChannel"
1514 ServerConfig:
1515 properties:
1516 signup:
1517 type: object
1518 properties:
1519 allowed:
1520 type: boolean
1521 transcoding:
1522 type: object
1523 properties:
1524 enabledResolutions:
1525 type: array
1526 items:
1527 type: number
1528 avatar:
1529 type: object
1530 properties:
1531 file:
1532 type: object
1533 properties:
1534 size:
1535 type: object
1536 properties:
1537 max:
1538 type: number
1539 extensions:
1540 type: array
1541 items:
1542 type: string
1543 video:
1544 type: object
1545 properties:
1546 file:
1547 type: object
1548 properties:
1549 extensions:
1550 type: array
1551 items:
1552 type: string
1553 Follow:
1554 properties:
1555 id:
1556 type: number
1557 follower:
1558 $ref: "#/definitions/Actor"
1559 following:
1560 $ref: "#/definitions/Actor"
1561 score:
1562 type: number
1563 state:
1564 type: string
1565 enum: [pending, accepted]
1566 createdAt:
1567 type: string
1568 updatedAt:
1569 type: string
1570 Job:
1571 properties:
1572 id:
1573 type: number
1574 state:
1575 type: string
1576 enum: [pending, processing, error, success]
1577 category:
1578 type: string
1579 enum: [transcoding, activitypub-http]
1580 handlerName:
1581 type: string
1582 handlerInputData:
1583 type: string
1584 createdAt:
1585 type: string
1586 updatedAt:
1587 type: string
1588
1589 # Api responses
1590 AddUserResponse:
1591 properties:
1592 id:
1593 type: number
1594 uuid:
1595 type: string
1596 VideoUploadResponse:
1597 properties:
1598 video:
1599 type: object
1600 properties:
1601 id:
1602 type: number
1603 uuid:
1604 type: string
1605 CommentThreadResponse:
1606 properties:
1607 total:
1608 type: number
1609 data:
1610 type: array
1611 items:
1612 $ref: "#/definitions/VideoComment"
1613 CommentThreadPostResponse:
1614 properties:
1615 comment:
1616 $ref: "#/definitions/VideoComment"
1617
1618 # Request bodies
1619 AddUser:
1620 properties:
1621 username:
1622 type: string
1623 description: 'The user username '
1624 password:
1625 type: string
1626 description: 'The user password '
1627 email:
1628 type: string
1629 description: 'The user email '
1630 videoQuota:
1631 type: string
1632 description: 'The user videoQuota '
1633 role:
1634 type: string
1635 description: 'The user role '
1636 required:
1637 - username
1638 - password
1639 - email
1640 - videoQuota
1641 - role
1642 UpdateUser:
1643 properties:
1644 id:
1645 type: string
1646 description: 'The user id '
1647 email:
1648 type: string
1649 description: 'The updated email of the user '
1650 videoQuota:
1651 type: string
1652 description: 'The updated videoQuota of the user '
1653 role:
1654 type: string
1655 description: 'The updated role of the user '
1656 required:
1657 - id
1658 - email
1659 - videoQuota
1660 - role
1661 UpdateMe:
1662 properties:
1663 password:
1664 type: string
1665 description: 'Your new password '
1666 email:
1667 type: string
1668 description: 'Your new email '
1669 displayNSFW:
1670 type: string
1671 description: 'Your new displayNSFW '
1672 autoPlayVideo:
1673 type: string
1674 description: 'Your new autoPlayVideo '
1675 required:
1676 - password
1677 - email
1678 - displayNSFW
1679 - autoPlayVideo
1680 GetMeVideoRating:
1681 properties:
1682 id:
1683 type: string
1684 description: 'Id of the video '
1685 rating:
1686 type: number
1687 description: 'Rating of the video '
1688 required:
1689 - id
1690 - rating
1691 RegisterUser:
1692 properties:
1693 username:
1694 type: string
1695 description: 'The username of the user '
1696 password:
1697 type: string
1698 description: 'The password of the user '
1699 email:
1700 type: string
1701 description: 'The email of the user '
1702 required:
1703 - username
1704 - password
1705 - email
1706 VideoChannelInput:
1707 properties:
1708 name:
1709 type: string
1710 description:
1711 type: string