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