]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - support/doc/api/openapi.yaml
f00e40737bab37fbcc5da884472a208a2645690a
[github/Chocobozzz/PeerTube.git] / support / doc / api / openapi.yaml
1 swagger: '2.0'
2 info:
3 title: PeerTube
4 version: 0.0.15-alpha
5 description: Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.
6 paths:
7 '/accounts/{id}':
8 get:
9 tags:
10 - Accounts
11 consumes:
12 - application/json
13 produces:
14 - application/json
15 parameters:
16 - name: id
17 in: path
18 required: true
19 type: string
20 description: 'The id of the account'
21 responses:
22 '200':
23 description: successful operation
24 schema:
25 $ref: '#/definitions/Account'
26 /accounts:
27 get:
28 tags:
29 - Accounts
30 consumes:
31 - application/json
32 produces:
33 - application/json
34 responses:
35 '200':
36 description: successful operation
37 schema:
38 type: array
39 items:
40 $ref: '#/definitions/Account'
41 /config:
42 get:
43 tags:
44 - Config
45 consumes:
46 - application/json
47 produces:
48 - application/json
49 responses:
50 '200':
51 description: successful operation
52 schema:
53 $ref: '#/definitions/ServerConfig'
54 /jobs:
55 get:
56 tags:
57 - Job
58 consumes:
59 - application/json
60 produces:
61 - application/json
62 responses:
63 '200':
64 description: successful operation
65 schema:
66 type: array
67 items:
68 $ref: '#/definitions/Job'
69 '/server/following/{host}':
70 delete:
71 tags:
72 - ServerFollowing
73 consumes:
74 - application/json
75 produces:
76 - application/json
77 parameters:
78 - name: host
79 in: path
80 required: true
81 type: string
82 description: 'The host to unfollow '
83 responses:
84 '201':
85 description: successful operation
86 /server/followers:
87 get:
88 tags:
89 - ServerFollowing
90 consumes:
91 - application/json
92 produces:
93 - application/json
94 responses:
95 '200':
96 description: successful operation
97 schema:
98 type: array
99 items:
100 $ref: '#/definitions/Follow'
101 /server/following:
102 get:
103 tags:
104 - ServerFollowing
105 consumes:
106 - application/json
107 produces:
108 - application/json
109 responses:
110 '200':
111 description: successful operation
112 schema:
113 type: array
114 items:
115 $ref: '#/definitions/Follow'
116 post:
117 tags:
118 - ServerFollowing
119 consumes:
120 - application/json
121 produces:
122 - application/json
123 parameters:
124 - in: body
125 name: body
126 schema:
127 $ref: '#/definitions/Follow'
128 responses:
129 '204':
130 description: successful operation
131 /users:
132 post:
133 tags:
134 - User
135 consumes:
136 - application/json
137 produces:
138 - application/json
139 parameters:
140 - in: body
141 name: body
142 required: true
143 schema:
144 $ref: '#/definitions/AddUser'
145 responses:
146 '200':
147 description: successful operation
148 schema:
149 $ref: '#/definitions/AddUserResponse'
150 get:
151 tags:
152 - User
153 consumes:
154 - application/json
155 produces:
156 - application/json
157 responses:
158 '200':
159 description: successful operation
160 schema:
161 type: array
162 items:
163 $ref: '#/definitions/User'
164 '/users/{id}':
165 delete:
166 tags:
167 - User
168 consumes:
169 - application/json
170 produces:
171 - application/json
172 parameters:
173 - name: id
174 in: path
175 required: true
176 type: string
177 description: 'The user id '
178 responses:
179 '204':
180 description: successful operation
181 get:
182 tags:
183 - User
184 consumes:
185 - application/json
186 produces:
187 - application/json
188 parameters:
189 - name: id
190 in: path
191 required: true
192 type: string
193 description: 'The user id '
194 responses:
195 '200':
196 description: successful operation
197 schema:
198 $ref: '#/definitions/User'
199 put:
200 tags:
201 - User
202 consumes:
203 - application/json
204 produces:
205 - application/json
206 parameters:
207 - name: id
208 in: path
209 required: true
210 type: string
211 description: 'The user id '
212 - in: body
213 name: body
214 required: true
215 schema:
216 $ref: '#/definitions/UpdateUser'
217 responses:
218 '204':
219 description: successful operation
220 /users/me:
221 get:
222 tags:
223 - User
224 consumes:
225 - application/json
226 produces:
227 - application/json
228 responses:
229 '200':
230 description: successful operation
231 schema:
232 type: array
233 items:
234 $ref: '#/definitions/User'
235 put:
236 tags:
237 - User
238 consumes:
239 - application/json
240 produces:
241 - application/json
242 parameters:
243 - in: body
244 name: body
245 required: true
246 schema:
247 $ref: '#/definitions/UpdateMe'
248 responses:
249 '204':
250 description: successful operation
251 /users/me/video-quota-used:
252 get:
253 tags:
254 - User
255 consumes:
256 - application/json
257 produces:
258 - application/json
259 parameters: []
260 responses:
261 '200':
262 description: successful operation
263 schema:
264 type: number
265 '/users/me/videos/{videoId}/rating':
266 get:
267 tags:
268 - User
269 consumes:
270 - application/json
271 produces:
272 - application/json
273 parameters:
274 - name: videoId
275 in: path
276 required: true
277 type: string
278 description: 'The video id '
279 responses:
280 '200':
281 description: successful operation
282 schema:
283 $ref: '#/definitions/GetMeVideoRating'
284 /users/me/videos:
285 get:
286 tags:
287 - User
288 consumes:
289 - application/json
290 produces:
291 - application/json
292 responses:
293 '200':
294 description: successful operation
295 schema:
296 type: array
297 items:
298 $ref: '#/definitions/Video'
299 /users/register:
300 post:
301 tags:
302 - User
303 consumes:
304 - application/json
305 produces:
306 - application/json
307 parameters:
308 - in: body
309 name: body
310 required: true
311 schema:
312 $ref: '#/definitions/RegisterUser'
313 responses:
314 '204':
315 description: successful operation
316 /users/me/avatar/pick:
317 post:
318 tags:
319 - User
320 consumes:
321 - multipart/form-data
322 produces:
323 - application/json
324 parameters:
325 - in: formData
326 name: avatarfile
327 type: file
328 description: The file to upload.
329 responses:
330 '200':
331 description: successful operation
332 schema:
333 $ref: '#/definitions/Avatar'
334 /videos:
335 get:
336 tags:
337 - Video
338 consumes:
339 - application/json
340 produces:
341 - application/json
342 responses:
343 '200':
344 description: successful operation
345 schema:
346 type: array
347 items:
348 $ref: '#/definitions/Video'
349 /videos/categories:
350 get:
351 tags:
352 - Video
353 consumes:
354 - application/json
355 produces:
356 - application/json
357 responses:
358 '200':
359 description: successful operation
360 schema:
361 type: array
362 items:
363 type: string
364 /videos/licences:
365 get:
366 tags:
367 - Video
368 consumes:
369 - application/json
370 produces:
371 - application/json
372 responses:
373 '200':
374 description: successful operation
375 schema:
376 type: array
377 items:
378 type: string
379 /videos/languages:
380 get:
381 tags:
382 - Video
383 consumes:
384 - application/json
385 produces:
386 - application/json
387 responses:
388 '200':
389 description: successful operation
390 schema:
391 type: array
392 items:
393 type: string
394 /videos/privacies:
395 get:
396 tags:
397 - Video
398 consumes:
399 - application/json
400 produces:
401 - application/json
402 responses:
403 '200':
404 description: successful operation
405 schema:
406 type: array
407 items:
408 type: string
409 /videos/search:
410 get:
411 tags:
412 - Video
413 consumes:
414 - application/json
415 produces:
416 - application/json
417 responses:
418 '200':
419 description: successful operation
420 schema:
421 type: array
422 items:
423 $ref: '#/definitions/Video'
424 "/videos/{id}":
425 put:
426 tags:
427 - Video
428 consumes:
429 - application/json
430 produces:
431 - application/json
432 parameters:
433 - name: id
434 in: path
435 required: true
436 type: string
437 description: 'The video id '
438 responses:
439 '200':
440 description: successful operation
441 schema:
442 $ref: '#/definitions/Video'
443 get:
444 tags:
445 - Video
446 consumes:
447 - application/json
448 produces:
449 - application/json
450 parameters:
451 - name: id
452 in: path
453 required: true
454 type: string
455 description: 'The video id '
456 responses:
457 '200':
458 description: successful operation
459 schema:
460 $ref: '#/definitions/Video'
461 delete:
462 tags:
463 - Video
464 consumes:
465 - application/json
466 produces:
467 - application/json
468 parameters:
469 - name: id
470 in: path
471 required: true
472 type: string
473 description: 'The video id '
474 responses:
475 '204':
476 description: successful operation
477 "/videos/{id}/description":
478 get:
479 tags:
480 - Video
481 consumes:
482 - application/json
483 produces:
484 - application/json
485 parameters:
486 - name: id
487 in: path
488 required: true
489 type: string
490 description: 'The video id '
491 responses:
492 '200':
493 description: successful operation
494 schema:
495 type: string
496 "/videos/{id}/views":
497 post:
498 tags:
499 - Video
500 consumes:
501 - application/json
502 produces:
503 - application/json
504 parameters:
505 - name: id
506 in: path
507 required: true
508 type: string
509 description: 'The video id '
510 responses:
511 '204':
512 description: successful operation
513 /videos/upload:
514 post:
515 tags:
516 - Video
517 consumes:
518 - multipart/form-data
519 produces:
520 - application/json
521 parameters:
522 - in: formData
523 name: videofile
524 type: file
525 description: The file to upload.
526 responses:
527 '200':
528 description: successful operation
529 schema:
530 $ref: '#/definitions/VideoUploadResponse'
531 /videos/abuse:
532 get:
533 tags:
534 - VideoAbuse
535 consumes:
536 - application/json
537 produces:
538 - application/json
539 responses:
540 '200':
541 description: successful operation
542 schema:
543 type: array
544 items:
545 $ref: '#/definitions/VideoAbuse'
546 "/videos/{id}/abuse":
547 post:
548 tags:
549 - VideoAbuse
550 consumes:
551 - application/json
552 produces:
553 - application/json
554 parameters:
555 - name: id
556 in: path
557 required: true
558 type: string
559 description: 'The video id '
560 responses:
561 '204':
562 description: successful operation
563 "/videos/{videoId}/blacklist":
564 post:
565 tags:
566 - VideoBlacklist
567 consumes:
568 - application/json
569 produces:
570 - application/json
571 parameters:
572 - name: videoId
573 in: path
574 required: true
575 type: string
576 description: 'The video id '
577 responses:
578 '204':
579 description: successful operation
580 delete:
581 tags:
582 - VideoBlacklist
583 consumes:
584 - application/json
585 produces:
586 - application/json
587 parameters:
588 - name: videoId
589 in: path
590 required: true
591 type: string
592 description: 'The video id '
593 responses:
594 '204':
595 description: successful operation
596 /videos/blacklist:
597 get:
598 tags:
599 - VideoBlacklist
600 consumes:
601 - application/json
602 produces:
603 - application/json
604 responses:
605 '200':
606 description: successful operation
607 schema:
608 type: array
609 items:
610 $ref: '#/definitions/VideoBlacklist'
611 /videos/channels:
612 get:
613 tags:
614 - VideoChannel
615 consumes:
616 - application/json
617 produces:
618 - application/json
619 responses:
620 '200':
621 description: successful operation
622 schema:
623 type: array
624 items:
625 $ref: '#/definitions/VideoChannel'
626 post:
627 tags:
628 - VideoChannel
629 consumes:
630 - application/json
631 produces:
632 - application/json
633 parameters:
634 - in: body
635 name: body
636 schema:
637 $ref: '#/definitions/VideoChannelInput'
638 responses:
639 '204':
640 description: successful operation
641 "/videos/channels/{id}":
642 get:
643 tags:
644 - VideoChannel
645 consumes:
646 - application/json
647 produces:
648 - application/json
649 parameters:
650 - name: id
651 in: path
652 required: true
653 type: string
654 description: 'The video id '
655 responses:
656 '200':
657 description: successful operation
658 schema:
659 $ref: '#/definitions/VideoChannel'
660 put:
661 tags:
662 - VideoChannel
663 consumes:
664 - application/json
665 produces:
666 - application/json
667 parameters:
668 - name: id
669 in: path
670 required: true
671 type: string
672 description: 'The video id '
673 - in: body
674 name: body
675 schema:
676 $ref: '#/definitions/VideoChannelInput'
677 responses:
678 '204':
679 description: successful operation
680 delete:
681 tags:
682 - VideoChannel
683 consumes:
684 - application/json
685 produces:
686 - application/json
687 parameters:
688 - name: id
689 in: path
690 required: true
691 type: string
692 description: 'The video id '
693 responses:
694 '204':
695 description: successful operation
696 /videos/accounts/{accountId}/channels:
697 get:
698 tags:
699 - VideoChannel
700 consumes:
701 - application/json
702 produces:
703 - application/json
704 parameters:
705 - name: accountId
706 in: path
707 required: true
708 type: string
709 description: 'The account id '
710 responses:
711 '200':
712 description: successful operation
713 schema:
714 type: array
715 items:
716 $ref: '#/definitions/VideoChannel'
717 "/videos/{videoId}/comment-threads":
718 get:
719 tags:
720 - VideoComment
721 consumes:
722 - application/json
723 produces:
724 - application/json
725 parameters:
726 - name: videoId
727 in: path
728 required: true
729 type: string
730 description: 'The video id '
731 responses:
732 '200':
733 description: successful operation
734 schema:
735 $ref: '#/definitions/CommentThreadResponse'
736 post:
737 tags:
738 - VideoComment
739 consumes:
740 - application/json
741 produces:
742 - application/json
743 parameters:
744 - name: videoId
745 in: path
746 required: true
747 type: string
748 description: 'The video id '
749 responses:
750 '200':
751 description: successful operation
752 schema:
753 $ref: '#/definitions/CommentThreadPostResponse'
754 "/videos/{videoId}/comment-threads/{threadId}":
755 get:
756 tags:
757 - VideoComment
758 consumes:
759 - application/json
760 produces:
761 - application/json
762 parameters:
763 - name: videoId
764 in: path
765 required: true
766 type: string
767 description: 'The video id '
768 - name: threadId
769 in: path
770 required: true
771 type: string
772 description: 'The thread id '
773 responses:
774 '200':
775 description: successful operation
776 schema:
777 $ref: '#/definitions/VideoCommentThreadTree'
778 "/videos/{videoId}/comments/{commentId}":
779 post:
780 tags:
781 - VideoComment
782 consumes:
783 - application/json
784 produces:
785 - application/json
786 parameters:
787 - name: videoId
788 in: path
789 required: true
790 type: string
791 description: 'The video id '
792 - name: commentId
793 in: path
794 required: true
795 type: string
796 description: 'The comment id '
797 responses:
798 '200':
799 description: successful operation
800 schema:
801 $ref: '#/definitions/CommentThreadPostResponse'
802 delete:
803 tags:
804 - VideoComment
805 consumes:
806 - application/json
807 produces:
808 - application/json
809 parameters:
810 - name: videoId
811 in: path
812 required: true
813 type: string
814 description: 'The video id '
815 - name: commentId
816 in: path
817 required: true
818 type: string
819 description: 'The comment id '
820 responses:
821 '204':
822 description: successful operation
823 "/videos/{id}/rate":
824 put:
825 tags:
826 - VideoRate
827 consumes:
828 - application/json
829 produces:
830 - application/json
831 parameters:
832 - name: id
833 in: path
834 required: true
835 type: string
836 description: 'The video id '
837 responses:
838 '204':
839 description: successful operation
840 definitions:
841 Video:
842 properties:
843 id:
844 type: number
845 uuid:
846 type: string
847 accountName:
848 type: string
849 createdAt:
850 type: string
851 updatedAt:
852 type: string
853 categoryLabel:
854 type: string
855 category:
856 type: number
857 licenceLabel:
858 type: string
859 licence:
860 type: number
861 languageLabel:
862 type: string
863 language:
864 type: number
865 description:
866 type: string
867 duration:
868 type: number
869 isLocal:
870 type: boolean
871 name:
872 type: string
873 serverHost:
874 type: string
875 thumbnailPath:
876 type: string
877 previewPath:
878 type: string
879 embedPath:
880 type: string
881 views:
882 type: number
883 likes:
884 type: number
885 dislikes:
886 type: number
887 nsfw:
888 type: boolean
889 VideoAbuse:
890 properties:
891 id:
892 type: number
893 reason:
894 type: string
895 reporterUsername:
896 type: string
897 reporterServerHost:
898 type: string
899 videoId:
900 type: number
901 videoUUID:
902 type: string
903 videoName:
904 type: string
905 createdAt:
906 type: string
907 VideoBlacklist:
908 properties:
909 id:
910 type: number
911 videoId:
912 type: number
913 createdAt:
914 type: string
915 updatedAt:
916 type: string
917 name:
918 type: string
919 uuid:
920 type: string
921 description:
922 type: string
923 duration:
924 type: number
925 views:
926 type: number
927 likes:
928 type: number
929 dislikes:
930 type: number
931 nsfw:
932 type: boolean
933 VideoChannel:
934 properties:
935 displayName:
936 type: string
937 description:
938 type: string
939 isLocal:
940 type: boolean
941 owner:
942 type: object
943 properties:
944 name:
945 type: string
946 uuid:
947 type: string
948 videos:
949 type: array
950 items:
951 $ref: "#/definitions/Video"
952 VideoComment:
953 properties:
954 id:
955 type: number
956 url:
957 type: string
958 text:
959 type: string
960 threadId:
961 type: number
962 inReplyToCommentId:
963 type: number
964 videoId:
965 type: number
966 createdAt:
967 type: string
968 updatedAt:
969 type: string
970 totalReplies:
971 type: number
972 account:
973 $ref: "#/definitions/Account"
974 VideoCommentThreadTree:
975 properties:
976 comment:
977 $ref: "#/definitions/VideoComment"
978 children:
979 type: array
980 items:
981 $ref: "#/definitions/VideoCommentThreadTree"
982 Avatar:
983 properties:
984 path:
985 type: string
986 createdAt:
987 type: string
988 updatedAt:
989 type: string
990 Actor:
991 properties:
992 id:
993 type: number
994 uuid:
995 type: string
996 url:
997 type: string
998 name:
999 type: string
1000 host:
1001 type: string
1002 followingCount:
1003 type: number
1004 followersCount:
1005 type: number
1006 createdAt:
1007 type: string
1008 updatedAt:
1009 type: string
1010 avatar:
1011 $ref: "#/definitions/Avatar"
1012 Account:
1013 allOf:
1014 - $ref: "#/definitions/Actor"
1015 - properties:
1016 displayName:
1017 type: string
1018 User:
1019 properties:
1020 id:
1021 type: number
1022 username:
1023 type: string
1024 email:
1025 type: string
1026 displayNSFW:
1027 type: boolean
1028 autoPlayVideo:
1029 type: boolean
1030 role:
1031 type: string
1032 enum: [User, Moderator, Administrator]
1033 videoQuota:
1034 type: number
1035 createdAt:
1036 type: string
1037 account:
1038 $ref: "#/definitions/Account"
1039 videoChannels:
1040 type: array
1041 items:
1042 $ref: "#/definitions/VideoChannel"
1043 ServerConfig:
1044 properties:
1045 signup:
1046 type: object
1047 properties:
1048 allowed:
1049 type: boolean
1050 transcoding:
1051 type: object
1052 properties:
1053 enabledResolutions:
1054 type: array
1055 items:
1056 type: number
1057 avatar:
1058 type: object
1059 properties:
1060 file:
1061 type: object
1062 properties:
1063 size:
1064 type: object
1065 properties:
1066 max:
1067 type: number
1068 extensions:
1069 type: array
1070 items:
1071 type: string
1072 video:
1073 type: object
1074 properties:
1075 file:
1076 type: object
1077 properties:
1078 extensions:
1079 type: array
1080 items:
1081 type: string
1082 Follow:
1083 properties:
1084 id:
1085 type: number
1086 follower:
1087 $ref: "#/definitions/Actor"
1088 following:
1089 $ref: "#/definitions/Actor"
1090 score:
1091 type: number
1092 state:
1093 type: string
1094 enum: [pending, accepted]
1095 createdAt:
1096 type: string
1097 updatedAt:
1098 type: string
1099 Job:
1100 properties:
1101 id:
1102 type: number
1103 state:
1104 type: string
1105 enum: [pending, processing, error, success]
1106 category:
1107 type: string
1108 enum: [transcoding, activitypub-http]
1109 handlerName:
1110 type: string
1111 handlerInputData:
1112 type: string
1113 createdAt:
1114 type: string
1115 updatedAt:
1116 type: string
1117
1118 #Api responses
1119 AddUserResponse:
1120 properties:
1121 id:
1122 type: number
1123 uuid:
1124 type: string
1125 VideoUploadResponse:
1126 properties:
1127 id:
1128 type: number
1129 uuid:
1130 type: string
1131 CommentThreadResponse:
1132 properties:
1133 total:
1134 type: number
1135 data:
1136 type: array
1137 items:
1138 $ref: "#/definitions/VideoComment"
1139 CommentThreadPostResponse:
1140 properties:
1141 comment:
1142 $ref: "#/definitions/VideoComment"
1143
1144 #request bodies
1145 AddUser:
1146 properties:
1147 username:
1148 type: string
1149 description: 'The user username '
1150 password:
1151 type: string
1152 description: 'The user password '
1153 email:
1154 type: string
1155 description: 'The user email '
1156 videoQuota:
1157 type: string
1158 description: 'The user videoQuota '
1159 role:
1160 type: string
1161 description: 'The user role '
1162 required:
1163 - username
1164 - password
1165 - email
1166 - videoQuota
1167 - role
1168 UpdateUser:
1169 properties:
1170 id:
1171 type: string
1172 description: 'The user id '
1173 email:
1174 type: string
1175 description: 'The updated email of the user '
1176 videoQuota:
1177 type: string
1178 description: 'The updated videoQuota of the user '
1179 role:
1180 type: string
1181 description: 'The updated role of the user '
1182 required:
1183 - id
1184 - email
1185 - videoQuota
1186 - role
1187 UpdateMe:
1188 properties:
1189 password:
1190 type: string
1191 description: 'Your new password '
1192 email:
1193 type: string
1194 description: 'Your new email '
1195 displayNSFW:
1196 type: string
1197 description: 'Your new displayNSFW '
1198 autoPlayVideo:
1199 type: string
1200 description: 'Your new autoPlayVideo '
1201 required:
1202 - password
1203 - email
1204 - displayNSFW
1205 - autoPlayVideo
1206 GetMeVideoRating:
1207 properties:
1208 id:
1209 type: string
1210 description: 'Id of the video '
1211 rating:
1212 type: number
1213 description: 'Rating of the video '
1214 required:
1215 - id
1216 - rating
1217 RegisterUser:
1218 properties:
1219 username:
1220 type: string
1221 description: 'The username of the user '
1222 password:
1223 type: string
1224 description: 'The password of the user '
1225 email:
1226 type: string
1227 description: 'The email of the user '
1228 required:
1229 - username
1230 - password
1231 - email
1232 VideoChannelInput:
1233 properties:
1234 name:
1235 type: string
1236 description:
1237 type: string