]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - support/doc/api/openapi.yaml
Video channel API routes refractor
[github/Chocobozzz/PeerTube.git] / support / doc / api / openapi.yaml
CommitLineData
1569a818
DG
1swagger: '2.0'
2info:
5e1c08eb 3 title: PeerTube
164e6c87 4 version: 1.0.0-beta
1569a818 5 description: Federated (ActivityPub) video streaming platform using P2P (BitTorrent) directly in the web browser with WebTorrent and Angular.
ea65a476 6host: peertube.example.com
94ff4c23
C
7securityDefinitions:
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
ea65a476
C
15basePath: '/api/v1'
16schemes:
17 - https
1569a818
DG
18paths:
19 '/accounts/{id}':
20 get:
21 tags:
22 - Accounts
23 consumes:
24 - application/json
25 produces:
26 - application/json
27 parameters:
28 - name: id
29 in: path
30 required: true
31 type: string
32 description: 'The id of the account'
44cb3b85
DG
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
61b66b36 42 description: 'stopping page'
44cb3b85
DG
43 - name: sort
44 in: query
45 required: false
46 type: number
47 description: 'sorting'
1569a818
DG
48 responses:
49 '200':
50 description: successful operation
51 schema:
52 $ref: '#/definitions/Account'
6b738c7a
C
53 '/accounts/{id}/videos':
54 get:
55 tags:
56 - Accounts
57 consumes:
58 - application/json
59 produces:
60 - application/json
61 parameters:
62 - name: id
63 in: path
64 required: true
65 type: string
66 description: 'The id of the account'
67 responses:
68 '200':
69 description: successful operation
70 schema:
71 $ref: '#/definitions/Video'
1569a818
DG
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:
5d00a3d7 99 $ref: '#/definitions/ServerConfig'
244e76a5
RK
100 /feeds/videos.{format}:
101 get:
102 tags:
103 - Feeds
244e76a5 104 produces:
9d3ef9fe
C
105 - application/atom+xml
106 - application/rss+xml
244e76a5
RK
107 - application/json
108 parameters:
109 - name: format
110 in: path
111 required: true
112 type: string
48dce1c9 113 enum: [ 'xml', 'atom', 'json']
244e76a5
RK
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
1569a818
DG
129 /jobs:
130 get:
94ff4c23
C
131 security:
132 - OAuth2: [ ]
1569a818
DG
133 tags:
134 - Job
135 consumes:
136 - application/json
137 produces:
138 - application/json
44cb3b85
DG
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'
1569a818
DG
160 responses:
161 '200':
162 description: successful operation
163 schema:
164 type: array
165 items:
5d00a3d7 166 $ref: '#/definitions/Job'
1569a818
DG
167 '/server/following/{host}':
168 delete:
94ff4c23
C
169 security:
170 - OAuth2: [ ]
1569a818
DG
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
44cb3b85
DG
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
61b66b36 204 description: 'stopping page'
44cb3b85
DG
205 - name: sort
206 in: query
207 required: false
208 type: number
209 description: 'sorting'
1569a818
DG
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
44cb3b85
DG
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
61b66b36 235 description: 'stopping page'
44cb3b85
DG
236 - name: sort
237 in: query
238 required: false
239 type: number
240 description: 'sorting'
1569a818
DG
241 responses:
242 '200':
243 description: successful operation
244 schema:
245 type: array
246 items:
247 $ref: '#/definitions/Follow'
248 post:
94ff4c23
C
249 security:
250 - OAuth2: [ ]
1569a818
DG
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:
94ff4c23
C
267 security:
268 - OAuth2: [ ]
1569a818
DG
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
61b66b36 279 description: 'User to create'
1569a818
DG
280 schema:
281 $ref: '#/definitions/AddUser'
282 responses:
283 '200':
284 description: successful operation
285 schema:
286 $ref: '#/definitions/AddUserResponse'
287 get:
94ff4c23
C
288 security:
289 - OAuth2: [ ]
1569a818
DG
290 tags:
291 - User
292 consumes:
293 - application/json
294 produces:
295 - application/json
44cb3b85
DG
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
61b66b36 306 description: 'stopping page'
44cb3b85
DG
307 - name: sort
308 in: query
309 required: false
310 type: number
311 description: 'sorting'
1569a818
DG
312 responses:
313 '200':
314 description: successful operation
315 schema:
316 type: array
317 items:
318 $ref: '#/definitions/User'
319 '/users/{id}':
320 delete:
94ff4c23
C
321 security:
322 - OAuth2: [ ]
1569a818
DG
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:
94ff4c23
C
339 security:
340 - OAuth2: [ ]
1569a818
DG
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:
94ff4c23
C
359 security:
360 - OAuth2: [ ]
1569a818
DG
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:
94ff4c23
C
383 security:
384 - OAuth2: [ ]
1569a818
DG
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:
94ff4c23
C
399 security:
400 - OAuth2: [ ]
1569a818
DG
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:
94ff4c23
C
418 security:
419 - OAuth2: [ ]
1569a818
DG
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:
94ff4c23
C
434 security:
435 - OAuth2: [ ]
1569a818
DG
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:
94ff4c23
C
455 security:
456 - OAuth2: [ ]
1569a818
DG
457 tags:
458 - User
459 consumes:
460 - application/json
461 produces:
462 - application/json
44cb3b85
DG
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
61b66b36 473 description: 'stopping page'
44cb3b85
DG
474 - name: sort
475 in: query
476 required: false
477 type: number
478 description: 'sorting'
1569a818
DG
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:
94ff4c23
C
505 security:
506 - OAuth2: [ ]
1569a818
DG
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'
c360c494 523 /videos:
1569a818
DG
524 get:
525 tags:
526 - Video
527 consumes:
528 - application/json
529 produces:
530 - application/json
44cb3b85
DG
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
61b66b36 541 description: 'stopping page'
44cb3b85
DG
542 - name: sort
543 in: query
544 required: false
545 type: number
546 description: 'sorting'
1569a818
DG
547 responses:
548 '200':
549 description: successful operation
550 schema:
551 type: array
552 items:
553 $ref: '#/definitions/Video'
c360c494 554 /videos/categories:
1569a818
DG
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
c360c494 569 /videos/licences:
1569a818
DG
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
c360c494 584 /videos/languages:
1569a818
DG
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
c360c494 599 /videos/privacies:
1569a818
DG
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
c360c494 614 /videos/search:
1569a818
DG
615 get:
616 tags:
617 - Video
618 consumes:
619 - application/json
620 produces:
621 - application/json
44cb3b85
DG
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
61b66b36 632 description: 'stopping page'
44cb3b85
DG
633 - name: sort
634 in: query
635 required: false
636 type: number
637 description: 'sorting'
1569a818
DG
638 responses:
639 '200':
640 description: successful operation
641 schema:
642 type: array
643 items:
644 $ref: '#/definitions/Video'
c360c494 645 "/videos/{id}":
1569a818 646 put:
94ff4c23
C
647 security:
648 - OAuth2: [ ]
1569a818
DG
649 tags:
650 - Video
651 consumes:
61b66b36 652 - multipart/form-data
1569a818
DG
653 produces:
654 - application/json
655 parameters:
656 - name: id
657 in: path
658 required: true
659 type: string
61b66b36
C
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
9d3ef9fe 679 type: string
61b66b36
C
680 description: 'Video language'
681 - name: description
682 in: formData
683 type: string
684 description: 'Video description'
685 - name: support
686 in: formData
687 type: string
688 description: 'Text describing how to support the video uploader'
689 - name: nsfw
690 in: formData
691 type: boolean
692 description: 'Whether or not this video contains sensitive content'
693 - name: name
694 in: formData
695 type: string
696 description: 'Video name'
697 - name: tags
698 in: formData
699 type: string[]
700 description: 'Video tags'
701 - name: commentsEnabled
702 in: formData
703 type: boolean
704 description: 'Enable or disable comments for this video'
705 - name: privacy
706 in: formData
707 type: string
97ea2404 708 enum: [Public, Unlisted]
61b66b36 709 description: 'Video privacy'
1569a818
DG
710 responses:
711 '200':
712 description: successful operation
713 schema:
714 $ref: '#/definitions/Video'
715 get:
716 tags:
717 - Video
718 consumes:
719 - application/json
720 produces:
721 - application/json
722 parameters:
723 - name: id
724 in: path
725 required: true
726 type: string
727 description: 'The video id '
728 responses:
729 '200':
730 description: successful operation
731 schema:
732 $ref: '#/definitions/Video'
733 delete:
94ff4c23
C
734 security:
735 - OAuth2: [ ]
1569a818
DG
736 tags:
737 - Video
738 consumes:
739 - application/json
740 produces:
741 - application/json
742 parameters:
743 - name: id
744 in: path
745 required: true
746 type: string
747 description: 'The video id '
748 responses:
749 '204':
750 description: successful operation
c360c494 751 "/videos/{id}/description":
1569a818
DG
752 get:
753 tags:
754 - Video
755 consumes:
756 - application/json
757 produces:
758 - application/json
759 parameters:
760 - name: id
761 in: path
762 required: true
763 type: string
764 description: 'The video id '
765 responses:
766 '200':
767 description: successful operation
768 schema:
769 type: string
c360c494 770 "/videos/{id}/views":
1569a818
DG
771 post:
772 tags:
773 - Video
774 consumes:
775 - application/json
776 produces:
777 - application/json
778 parameters:
779 - name: id
780 in: path
781 required: true
782 type: string
783 description: 'The video id '
784 responses:
785 '204':
786 description: successful operation
c360c494 787 /videos/upload:
1569a818 788 post:
94ff4c23
C
789 security:
790 - OAuth2: [ ]
1569a818
DG
791 tags:
792 - Video
793 consumes:
794 - multipart/form-data
795 produces:
796 - application/json
797 parameters:
61b66b36
C
798 - name: videofile
799 in: formData
1569a818 800 type: file
61b66b36
C
801 required: true
802 description: 'Video file'
803 - name: thumbnailfile
804 in: formData
805 type: file
806 required: true
807 description: 'Video thumbnail file'
808 - name: previewfile
809 in: formData
810 type: file
811 required: true
812 description: 'Video preview file'
813 - name: category
814 in: formData
815 type: number
816 description: 'Video category'
817 - name: licence
818 in: formData
819 type: number
820 description: 'Video licence'
821 - name: language
822 in: formData
9d3ef9fe 823 type: string
61b66b36
C
824 description: 'Video language'
825 - name: description
826 in: formData
827 type: string
828 description: 'Video description'
829 - name: support
830 in: formData
831 type: string
832 description: 'Text describing how to support the video uploader'
833 - name: channelId
834 in: formData
835 required: true
836 type: number
837 description: 'Channel id that will contain this video'
838 - name: nsfw
839 in: formData
840 required: true
841 type: boolean
842 description: 'Whether or not this video contains sensitive content'
843 - name: name
844 in: formData
845 required: true
846 type: string
847 description: 'Video name'
848 - name: tags
849 in: formData
850 type: string[]
851 description: 'Video tags'
852 - name: commentsEnabled
853 in: formData
854 type: boolean
855 description: 'Enable or disable comments for this video'
856 - name: privacy
857 in: formData
858 required: true
859 type: string
860 enum: [Public, Unlisted, Private]
861 description: 'Video privacy'
1569a818
DG
862 responses:
863 '200':
864 description: successful operation
865 schema:
866 $ref: '#/definitions/VideoUploadResponse'
c360c494 867 /videos/abuse:
1569a818 868 get:
94ff4c23
C
869 security:
870 - OAuth2: [ ]
1569a818
DG
871 tags:
872 - VideoAbuse
873 consumes:
874 - application/json
875 produces:
876 - application/json
44cb3b85
DG
877 parameters:
878 - name: start
879 in: query
880 required: false
881 type: number
882 description: 'starting page'
883 - name: stop
884 in: query
885 required: false
886 type: number
61b66b36 887 description: 'stopping page'
44cb3b85
DG
888 - name: sort
889 in: query
890 required: false
891 type: number
892 description: 'sorting'
1569a818
DG
893 responses:
894 '200':
895 description: successful operation
896 schema:
897 type: array
898 items:
899 $ref: '#/definitions/VideoAbuse'
c360c494 900 "/videos/{id}/abuse":
1569a818 901 post:
94ff4c23
C
902 security:
903 - OAuth2: [ ]
1569a818
DG
904 tags:
905 - VideoAbuse
906 consumes:
907 - application/json
908 produces:
909 - application/json
910 parameters:
911 - name: id
912 in: path
913 required: true
914 type: string
915 description: 'The video id '
916 responses:
917 '204':
918 description: successful operation
c360c494 919 "/videos/{videoId}/blacklist":
1569a818 920 post:
94ff4c23
C
921 security:
922 - OAuth2: [ ]
1569a818
DG
923 tags:
924 - VideoBlacklist
925 consumes:
926 - application/json
927 produces:
928 - application/json
929 parameters:
930 - name: videoId
931 in: path
932 required: true
933 type: string
934 description: 'The video id '
935 responses:
936 '204':
937 description: successful operation
938 delete:
94ff4c23
C
939 security:
940 - OAuth2: [ ]
1569a818
DG
941 tags:
942 - VideoBlacklist
943 consumes:
944 - application/json
945 produces:
946 - application/json
947 parameters:
948 - name: videoId
949 in: path
950 required: true
951 type: string
952 description: 'The video id '
953 responses:
954 '204':
955 description: successful operation
c360c494 956 /videos/blacklist:
1569a818 957 get:
94ff4c23
C
958 security:
959 - OAuth2: [ ]
1569a818
DG
960 tags:
961 - VideoBlacklist
962 consumes:
963 - application/json
964 produces:
965 - application/json
44cb3b85
DG
966 parameters:
967 - name: start
968 in: query
969 required: false
970 type: number
971 description: 'starting page'
972 - name: stop
973 in: query
974 required: false
975 type: number
61b66b36 976 description: 'stopping page'
44cb3b85
DG
977 - name: sort
978 in: query
979 required: false
980 type: number
981 description: 'sorting'
1569a818
DG
982 responses:
983 '200':
984 description: successful operation
985 schema:
986 type: array
987 items:
988 $ref: '#/definitions/VideoBlacklist'
48dce1c9 989 /video-channels:
1569a818
DG
990 get:
991 tags:
992 - VideoChannel
993 consumes:
994 - application/json
995 produces:
996 - application/json
44cb3b85
DG
997 parameters:
998 - name: start
999 in: query
1000 required: false
1001 type: number
1002 description: 'starting page'
1003 - name: stop
1004 in: query
1005 required: false
1006 type: number
61b66b36 1007 description: 'stopping page'
44cb3b85
DG
1008 - name: sort
1009 in: query
1010 required: false
1011 type: number
1012 description: 'sorting'
1569a818
DG
1013 responses:
1014 '200':
1015 description: successful operation
1016 schema:
1017 type: array
1018 items:
1019 $ref: '#/definitions/VideoChannel'
48dce1c9
C
1020 /accounts/{accountId}/video-channels:
1021 get:
1022 tags:
1023 - VideoChannel
1024 consumes:
1025 - application/json
1026 produces:
1027 - application/json
1028 parameters:
1029 - name: accountId
1030 in: path
1031 required: true
1032 type: string
1033 description: 'The account id '
1034 responses:
1035 '200':
1036 description: successful operation
1037 schema:
1038 type: array
1039 items:
1040 $ref: '#/definitions/VideoChannel'
1569a818 1041 post:
94ff4c23
C
1042 security:
1043 - OAuth2: [ ]
1569a818
DG
1044 tags:
1045 - VideoChannel
1046 consumes:
1047 - application/json
1048 produces:
1049 - application/json
1050 parameters:
48dce1c9
C
1051 - name: accountId
1052 in: path
1053 required: true
1054 type: string
1055 description: 'The account id '
1569a818
DG
1056 - in: body
1057 name: body
1058 schema:
1059 $ref: '#/definitions/VideoChannelInput'
1060 responses:
1061 '204':
1062 description: successful operation
48dce1c9 1063 "/account/{accountId}/video-channels/{id}":
1569a818
DG
1064 get:
1065 tags:
1066 - VideoChannel
1067 consumes:
1068 - application/json
1069 produces:
1070 - application/json
1071 parameters:
48dce1c9
C
1072 - name: accountId
1073 in: path
1074 required: true
1075 type: string
1076 description: 'The account id '
1569a818
DG
1077 - name: id
1078 in: path
1079 required: true
1080 type: string
48dce1c9 1081 description: 'The video channel id '
1569a818
DG
1082 responses:
1083 '200':
1084 description: successful operation
1085 schema:
1086 $ref: '#/definitions/VideoChannel'
1087 put:
94ff4c23
C
1088 security:
1089 - OAuth2: [ ]
1569a818
DG
1090 tags:
1091 - VideoChannel
1092 consumes:
1093 - application/json
1094 produces:
1095 - application/json
1096 parameters:
48dce1c9
C
1097 - name: accountId
1098 in: path
1099 required: true
1100 type: string
1101 description: 'The account id '
1569a818
DG
1102 - name: id
1103 in: path
1104 required: true
1105 type: string
48dce1c9 1106 description: 'The video channel id '
1569a818
DG
1107 - in: body
1108 name: body
1109 schema:
1110 $ref: '#/definitions/VideoChannelInput'
1111 responses:
1112 '204':
1113 description: successful operation
1114 delete:
94ff4c23
C
1115 security:
1116 - OAuth2: [ ]
1569a818
DG
1117 tags:
1118 - VideoChannel
1119 consumes:
1120 - application/json
1121 produces:
1122 - application/json
1123 parameters:
48dce1c9 1124 - name: accountId
1569a818
DG
1125 in: path
1126 required: true
1127 type: string
48dce1c9
C
1128 description: 'The account id '
1129 - name: id
1569a818
DG
1130 in: path
1131 required: true
1132 type: string
48dce1c9 1133 description: 'The video channel id '
1569a818 1134 responses:
48dce1c9 1135 '204':
1569a818 1136 description: successful operation
6b738c7a
C
1137 "/account/{accountId}/video-channels/{id}/videos":
1138 get:
1139 tags:
1140 - VideoChannel
1141 consumes:
1142 - application/json
1143 produces:
1144 - application/json
1145 parameters:
1146 - name: accountId
1147 in: path
1148 required: true
1149 type: string
1150 description: 'The account id '
1151 - name: id
1152 in: path
1153 required: true
1154 type: string
1155 description: 'The video channel id '
1156 responses:
1157 '200':
1158 description: successful operation
1159 schema:
1160 $ref: '#/definitions/Video'
c360c494 1161 "/videos/{videoId}/comment-threads":
1569a818
DG
1162 get:
1163 tags:
1164 - VideoComment
1165 consumes:
1166 - application/json
1167 produces:
1168 - application/json
1169 parameters:
1170 - name: videoId
1171 in: path
1172 required: true
1173 type: string
1174 description: 'The video id '
44cb3b85
DG
1175 - name: start
1176 in: query
1177 required: false
1178 type: number
1179 description: 'starting page'
1180 - name: stop
1181 in: query
1182 required: false
1183 type: number
61b66b36 1184 description: 'stopping page'
44cb3b85
DG
1185 - name: sort
1186 in: query
1187 required: false
1188 type: number
1189 description: 'sorting'
1569a818
DG
1190 responses:
1191 '200':
1192 description: successful operation
5e1c08eb 1193 schema:
c360c494 1194 $ref: '#/definitions/CommentThreadResponse'
1569a818 1195 post:
94ff4c23
C
1196 security:
1197 - OAuth2: [ ]
1569a818
DG
1198 tags:
1199 - VideoComment
1200 consumes:
1201 - application/json
1202 produces:
1203 - application/json
1204 parameters:
1205 - name: videoId
1206 in: path
1207 required: true
1208 type: string
1209 description: 'The video id '
1210 responses:
1211 '200':
1212 description: successful operation
c360c494
DG
1213 schema:
1214 $ref: '#/definitions/CommentThreadPostResponse'
1215 "/videos/{videoId}/comment-threads/{threadId}":
1569a818
DG
1216 get:
1217 tags:
1218 - VideoComment
1219 consumes:
1220 - application/json
1221 produces:
1222 - application/json
1223 parameters:
1224 - name: videoId
1225 in: path
1226 required: true
1227 type: string
1228 description: 'The video id '
1229 - name: threadId
1230 in: path
1231 required: true
1232 type: string
1233 description: 'The thread id '
1234 responses:
1235 '200':
1236 description: successful operation
5e1c08eb
C
1237 schema:
1238 $ref: '#/definitions/VideoCommentThreadTree'
c360c494 1239 "/videos/{videoId}/comments/{commentId}":
1569a818 1240 post:
94ff4c23
C
1241 security:
1242 - OAuth2: [ ]
1569a818
DG
1243 tags:
1244 - VideoComment
1245 consumes:
1246 - application/json
1247 produces:
1248 - application/json
1249 parameters:
1250 - name: videoId
1251 in: path
1252 required: true
1253 type: string
1254 description: 'The video id '
1255 - name: commentId
1256 in: path
1257 required: true
1258 type: string
1259 description: 'The comment id '
1260 responses:
1261 '200':
1262 description: successful operation
c360c494
DG
1263 schema:
1264 $ref: '#/definitions/CommentThreadPostResponse'
1569a818 1265 delete:
94ff4c23
C
1266 security:
1267 - OAuth2: [ ]
1569a818
DG
1268 tags:
1269 - VideoComment
1270 consumes:
1271 - application/json
1272 produces:
1273 - application/json
1274 parameters:
1275 - name: videoId
1276 in: path
1277 required: true
1278 type: string
1279 description: 'The video id '
1280 - name: commentId
1281 in: path
1282 required: true
1283 type: string
1284 description: 'The comment id '
1285 responses:
1286 '204':
1287 description: successful operation
c360c494 1288 "/videos/{id}/rate":
1569a818 1289 put:
94ff4c23
C
1290 security:
1291 - OAuth2: [ ]
1569a818
DG
1292 tags:
1293 - VideoRate
1294 consumes:
1295 - application/json
1296 produces:
1297 - application/json
1298 parameters:
1299 - name: id
1300 in: path
1301 required: true
1302 type: string
1303 description: 'The video id '
1304 responses:
1305 '204':
1306 description: successful operation
1307definitions:
9d3ef9fe 1308 VideoConstantNumber:
5d00a3d7
C
1309 properties:
1310 id:
1311 type: number
1312 label:
1313 type: string
9d3ef9fe
C
1314 VideoConstantString:
1315 properties:
1316 id:
1317 type: string
1318 label:
1319 type: string
61b66b36
C
1320 VideoPrivacy:
1321 type: string
1322 enum: [Public, Unlisted, Private]
1569a818
DG
1323 Video:
1324 properties:
1325 id:
1326 type: number
1327 uuid:
1328 type: string
1569a818
DG
1329 createdAt:
1330 type: string
61b66b36
C
1331 publishedAt:
1332 type: string
1569a818
DG
1333 updatedAt:
1334 type: string
1569a818 1335 category:
9d3ef9fe 1336 $ref: "#/definitions/VideoConstantNumber"
1569a818 1337 licence:
9d3ef9fe 1338 $ref: "#/definitions/VideoConstantNumber"
1569a818 1339 language:
9d3ef9fe 1340 $ref: "#/definitions/VideoConstantString"
61b66b36
C
1341 privacy:
1342 $ref: "#/definitions/VideoPrivacy"
1569a818
DG
1343 description:
1344 type: string
1345 duration:
1346 type: number
1347 isLocal:
1348 type: boolean
1349 name:
1350 type: string
1569a818
DG
1351 thumbnailPath:
1352 type: string
1353 previewPath:
1354 type: string
1355 embedPath:
1356 type: string
1357 views:
1358 type: number
1359 likes:
1360 type: number
1361 dislikes:
1362 type: number
1363 nsfw:
1364 type: boolean
b64c950a 1365 account:
61b66b36
C
1366 type: object
1367 properties:
1368 name:
1369 type: string
1370 displayName:
1371 type: string
1372 url:
1373 type: string
1374 host:
1375 type: string
1376 avatar:
1377 $ref: "#/definitions/Avatar"
1569a818
DG
1378 VideoAbuse:
1379 properties:
1380 id:
1381 type: number
1382 reason:
1383 type: string
19a3b914
C
1384 reporterAccount:
1385 $ref: "#/definitions/Account"
1386 video:
61b66b36
C
1387 type: object
1388 properties:
1389 id:
1390 type: number
1391 name:
1392 type: string
1393 uuid:
1394 type: string
1395 url:
1396 type: string
1569a818
DG
1397 createdAt:
1398 type: string
1399 VideoBlacklist:
1400 properties:
1401 id:
1402 type: number
1403 videoId:
1404 type: number
1405 createdAt:
1406 type: string
1407 updatedAt:
1408 type: string
1409 name:
1410 type: string
1411 uuid:
1412 type: string
1413 description:
1414 type: string
1415 duration:
1416 type: number
1417 views:
1418 type: number
1419 likes:
1420 type: number
1421 dislikes:
1422 type: number
1423 nsfw:
1424 type: boolean
1425 VideoChannel:
1426 properties:
1427 displayName:
1428 type: string
1429 description:
1430 type: string
1431 isLocal:
1432 type: boolean
6b738c7a 1433 ownerAccount:
1569a818 1434 type: object
5d00a3d7 1435 properties:
6b738c7a
C
1436 id:
1437 type: number
5d00a3d7 1438 uuid:
1569a818 1439 type: string
1569a818
DG
1440 VideoComment:
1441 properties:
1442 id:
1443 type: number
1444 url:
1445 type: string
1446 text:
1447 type: string
1448 threadId:
1449 type: number
1450 inReplyToCommentId:
1451 type: number
1452 videoId:
1453 type: number
1454 createdAt:
1455 type: string
1456 updatedAt:
1457 type: string
1458 totalReplies:
1459 type: number
1460 account:
1461 $ref: "#/definitions/Account"
5e1c08eb
C
1462 VideoCommentThreadTree:
1463 properties:
1464 comment:
1465 $ref: "#/definitions/VideoComment"
1466 children:
1467 type: array
1468 items:
1469 $ref: "#/definitions/VideoCommentThreadTree"
1569a818
DG
1470 Avatar:
1471 properties:
1472 path:
1473 type: string
1474 createdAt:
1475 type: string
1476 updatedAt:
1477 type: string
1478 Actor:
1479 properties:
1480 id:
1481 type: number
1482 uuid:
1483 type: string
1484 url:
1485 type: string
1486 name:
1487 type: string
1488 host:
1489 type: string
1490 followingCount:
1491 type: number
1492 followersCount:
1493 type: number
1494 createdAt:
1495 type: string
1496 updatedAt:
1497 type: string
1498 avatar:
1499 $ref: "#/definitions/Avatar"
1500 Account:
1501 allOf:
1502 - $ref: "#/definitions/Actor"
1503 - properties:
1504 displayName:
1505 type: string
1506 User:
1507 properties:
1508 id:
1509 type: number
1510 username:
1511 type: string
1512 email:
1513 type: string
1514 displayNSFW:
1515 type: boolean
1516 autoPlayVideo:
1517 type: boolean
1518 role:
1519 type: string
5d00a3d7 1520 enum: [User, Moderator, Administrator]
1569a818
DG
1521 videoQuota:
1522 type: number
1523 createdAt:
1524 type: string
1525 account:
1526 $ref: "#/definitions/Account"
1527 videoChannels:
1528 type: array
1529 items:
1530 $ref: "#/definitions/VideoChannel"
1531 ServerConfig:
1532 properties:
5d00a3d7 1533 signup:
1569a818
DG
1534 type: object
1535 properties:
1536 allowed:
1537 type: boolean
1538 transcoding:
1539 type: object
1540 properties:
1541 enabledResolutions:
1542 type: array
1543 items:
1544 type: number
1545 avatar:
1546 type: object
1547 properties:
1548 file:
1549 type: object
1550 properties:
1551 size:
1552 type: object
1553 properties:
1554 max:
1555 type: number
5d00a3d7 1556 extensions:
1569a818
DG
1557 type: array
1558 items:
1559 type: string
1560 video:
1561 type: object
1562 properties:
1563 file:
1564 type: object
5d00a3d7
C
1565 properties:
1566 extensions:
1569a818
DG
1567 type: array
1568 items:
1569 type: string
1570 Follow:
1571 properties:
1572 id:
1573 type: number
1574 follower:
1575 $ref: "#/definitions/Actor"
1576 following:
1577 $ref: "#/definitions/Actor"
1578 score:
1579 type: number
1580 state:
1581 type: string
1582 enum: [pending, accepted]
1583 createdAt:
1584 type: string
1585 updatedAt:
1586 type: string
1587 Job:
1588 properties:
1589 id:
1590 type: number
1591 state:
1592 type: string
1593 enum: [pending, processing, error, success]
1594 category:
1595 type: string
1596 enum: [transcoding, activitypub-http]
1597 handlerName:
1598 type: string
1599 handlerInputData:
1600 type: string
1601 createdAt:
1602 type: string
1603 updatedAt:
1604 type: string
1605
61b66b36 1606# Api responses
1569a818
DG
1607 AddUserResponse:
1608 properties:
1609 id:
1610 type: number
1611 uuid:
1612 type: string
1613 VideoUploadResponse:
1614 properties:
61b66b36
C
1615 video:
1616 type: object
1617 properties:
1618 id:
1619 type: number
1620 uuid:
1621 type: string
c360c494
DG
1622 CommentThreadResponse:
1623 properties:
1624 total:
1625 type: number
1626 data:
1627 type: array
1628 items:
1629 $ref: "#/definitions/VideoComment"
1630 CommentThreadPostResponse:
1631 properties:
1632 comment:
1633 $ref: "#/definitions/VideoComment"
1569a818 1634
61b66b36 1635# Request bodies
1569a818
DG
1636 AddUser:
1637 properties:
1638 username:
1639 type: string
1640 description: 'The user username '
1641 password:
1642 type: string
1643 description: 'The user password '
1644 email:
1645 type: string
1646 description: 'The user email '
1647 videoQuota:
1648 type: string
1649 description: 'The user videoQuota '
1650 role:
1651 type: string
1652 description: 'The user role '
1653 required:
1654 - username
1655 - password
1656 - email
1657 - videoQuota
1658 - role
1659 UpdateUser:
1660 properties:
1661 id:
1662 type: string
1663 description: 'The user id '
1664 email:
1665 type: string
1666 description: 'The updated email of the user '
1667 videoQuota:
1668 type: string
1669 description: 'The updated videoQuota of the user '
1670 role:
1671 type: string
1672 description: 'The updated role of the user '
1673 required:
1674 - id
1675 - email
1676 - videoQuota
1677 - role
1678 UpdateMe:
1679 properties:
1680 password:
1681 type: string
1682 description: 'Your new password '
1683 email:
1684 type: string
1685 description: 'Your new email '
1686 displayNSFW:
1687 type: string
1688 description: 'Your new displayNSFW '
1689 autoPlayVideo:
1690 type: string
1691 description: 'Your new autoPlayVideo '
1692 required:
1693 - password
1694 - email
1695 - displayNSFW
1696 - autoPlayVideo
1697 GetMeVideoRating:
1698 properties:
1699 id:
1700 type: string
1701 description: 'Id of the video '
1702 rating:
1703 type: number
1704 description: 'Rating of the video '
1705 required:
1706 - id
1707 - rating
1708 RegisterUser:
1709 properties:
1710 username:
1711 type: string
1712 description: 'The username of the user '
1713 password:
1714 type: string
1715 description: 'The password of the user '
1716 email:
1717 type: string
1718 description: 'The email of the user '
1719 required:
1720 - username
1721 - password
1722 - email
1723 VideoChannelInput:
1724 properties:
1725 name:
1726 type: string
1727 description:
1728 type: string