aboutsummaryrefslogtreecommitdiff
path: root/backend/docs/swagger.json
diff options
context:
space:
mode:
Diffstat (limited to 'backend/docs/swagger.json')
-rw-r--r--backend/docs/swagger.json2136
1 files changed, 2136 insertions, 0 deletions
diff --git a/backend/docs/swagger.json b/backend/docs/swagger.json
new file mode 100644
index 0000000..6de5978
--- /dev/null
+++ b/backend/docs/swagger.json
@@ -0,0 +1,2136 @@
1{
2 "swagger": "2.0",
3 "info": {
4 "description": "Backend API endpoints for the Least Portals Database.",
5 "title": "Least Portals Database API",
6 "contact": {},
7 "license": {
8 "name": "GNU Affero General Public License, Version 3",
9 "url": "https://www.gnu.org/licenses/agpl-3.0.html"
10 },
11 "version": "1.0"
12 },
13 "host": "lp.ardapektezol.com",
14 "basePath": "/api/v1",
15 "paths": {
16 "/chapters/{chapterid}": {
17 "get": {
18 "description": "Get maps from the specified chapter id.",
19 "produces": [
20 "application/json"
21 ],
22 "tags": [
23 "games \u0026 chapters"
24 ],
25 "parameters": [
26 {
27 "type": "integer",
28 "description": "Chapter ID",
29 "name": "chapterid",
30 "in": "path",
31 "required": true
32 }
33 ],
34 "responses": {
35 "200": {
36 "description": "OK",
37 "schema": {
38 "allOf": [
39 {
40 "$ref": "#/definitions/models.Response"
41 },
42 {
43 "type": "object",
44 "properties": {
45 "data": {
46 "$ref": "#/definitions/handlers.ChapterMapsResponse"
47 }
48 }
49 }
50 ]
51 }
52 },
53 "400": {
54 "description": "Bad Request",
55 "schema": {
56 "$ref": "#/definitions/models.Response"
57 }
58 }
59 }
60 }
61 },
62 "/demos": {
63 "get": {
64 "description": "Get demo with specified demo uuid.",
65 "consumes": [
66 "application/json"
67 ],
68 "produces": [
69 "application/octet-stream"
70 ],
71 "tags": [
72 "demo"
73 ],
74 "parameters": [
75 {
76 "type": "string",
77 "description": "Demo UUID",
78 "name": "uuid",
79 "in": "query",
80 "required": true
81 }
82 ],
83 "responses": {
84 "200": {
85 "description": "Demo File",
86 "schema": {
87 "type": "file"
88 }
89 }
90 }
91 }
92 },
93 "/games": {
94 "get": {
95 "description": "Get games from the leaderboards.",
96 "produces": [
97 "application/json"
98 ],
99 "tags": [
100 "games \u0026 chapters"
101 ],
102 "responses": {
103 "200": {
104 "description": "OK",
105 "schema": {
106 "allOf": [
107 {
108 "$ref": "#/definitions/models.Response"
109 },
110 {
111 "type": "object",
112 "properties": {
113 "data": {
114 "type": "array",
115 "items": {
116 "$ref": "#/definitions/models.Game"
117 }
118 }
119 }
120 }
121 ]
122 }
123 },
124 "400": {
125 "description": "Bad Request",
126 "schema": {
127 "$ref": "#/definitions/models.Response"
128 }
129 }
130 }
131 }
132 },
133 "/games/{gameid}": {
134 "get": {
135 "description": "Get chapters from the specified game id.",
136 "produces": [
137 "application/json"
138 ],
139 "tags": [
140 "games \u0026 chapters"
141 ],
142 "parameters": [
143 {
144 "type": "integer",
145 "description": "Game ID",
146 "name": "gameid",
147 "in": "path",
148 "required": true
149 }
150 ],
151 "responses": {
152 "200": {
153 "description": "OK",
154 "schema": {
155 "allOf": [
156 {
157 "$ref": "#/definitions/models.Response"
158 },
159 {
160 "type": "object",
161 "properties": {
162 "data": {
163 "$ref": "#/definitions/handlers.ChaptersResponse"
164 }
165 }
166 }
167 ]
168 }
169 }
170 }
171 }
172 },
173 "/games/{gameid}/maps": {
174 "get": {
175 "description": "Get maps from the specified game id.",
176 "produces": [
177 "application/json"
178 ],
179 "tags": [
180 "games \u0026 chapters"
181 ],
182 "parameters": [
183 {
184 "type": "integer",
185 "description": "Game ID",
186 "name": "gameid",
187 "in": "path",
188 "required": true
189 }
190 ],
191 "responses": {
192 "200": {
193 "description": "OK",
194 "schema": {
195 "allOf": [
196 {
197 "$ref": "#/definitions/models.Response"
198 },
199 {
200 "type": "object",
201 "properties": {
202 "data": {
203 "$ref": "#/definitions/handlers.ChaptersResponse"
204 }
205 }
206 }
207 ]
208 }
209 }
210 }
211 }
212 },
213 "/login": {
214 "get": {
215 "description": "Get (redirect) login page for Steam auth.",
216 "consumes": [
217 "application/json"
218 ],
219 "produces": [
220 "application/json"
221 ],
222 "tags": [
223 "login"
224 ],
225 "responses": {
226 "200": {
227 "description": "OK",
228 "schema": {
229 "allOf": [
230 {
231 "$ref": "#/definitions/models.Response"
232 },
233 {
234 "type": "object",
235 "properties": {
236 "data": {
237 "$ref": "#/definitions/handlers.LoginResponse"
238 }
239 }
240 }
241 ]
242 }
243 }
244 }
245 }
246 },
247 "/logs/mod": {
248 "get": {
249 "description": "Get mod logs.",
250 "produces": [
251 "application/json"
252 ],
253 "tags": [
254 "logs"
255 ],
256 "parameters": [
257 {
258 "type": "string",
259 "description": "JWT Token",
260 "name": "Authorization",
261 "in": "header",
262 "required": true
263 }
264 ],
265 "responses": {
266 "200": {
267 "description": "OK",
268 "schema": {
269 "allOf": [
270 {
271 "$ref": "#/definitions/models.Response"
272 },
273 {
274 "type": "object",
275 "properties": {
276 "data": {
277 "$ref": "#/definitions/handlers.LogsResponse"
278 }
279 }
280 }
281 ]
282 }
283 }
284 }
285 }
286 },
287 "/logs/score": {
288 "get": {
289 "description": "Get score logs of every player.",
290 "produces": [
291 "application/json"
292 ],
293 "tags": [
294 "logs"
295 ],
296 "responses": {
297 "200": {
298 "description": "OK",
299 "schema": {
300 "allOf": [
301 {
302 "$ref": "#/definitions/models.Response"
303 },
304 {
305 "type": "object",
306 "properties": {
307 "data": {
308 "$ref": "#/definitions/handlers.ScoreLogsResponse"
309 }
310 }
311 }
312 ]
313 }
314 }
315 }
316 }
317 },
318 "/maps/{mapid}/discussions": {
319 "get": {
320 "description": "Get map discussions with specified map id.",
321 "produces": [
322 "application/json"
323 ],
324 "tags": [
325 "maps / discussions"
326 ],
327 "parameters": [
328 {
329 "type": "integer",
330 "description": "Map ID",
331 "name": "mapid",
332 "in": "path",
333 "required": true
334 }
335 ],
336 "responses": {
337 "200": {
338 "description": "OK",
339 "schema": {
340 "allOf": [
341 {
342 "$ref": "#/definitions/models.Response"
343 },
344 {
345 "type": "object",
346 "properties": {
347 "data": {
348 "$ref": "#/definitions/handlers.MapDiscussionsResponse"
349 }
350 }
351 }
352 ]
353 }
354 }
355 }
356 },
357 "post": {
358 "description": "Create map discussion with specified map id.",
359 "produces": [
360 "application/json"
361 ],
362 "tags": [
363 "maps / discussions"
364 ],
365 "parameters": [
366 {
367 "type": "string",
368 "description": "JWT Token",
369 "name": "Authorization",
370 "in": "header",
371 "required": true
372 },
373 {
374 "type": "integer",
375 "description": "Map ID",
376 "name": "mapid",
377 "in": "path",
378 "required": true
379 },
380 {
381 "description": "Body",
382 "name": "request",
383 "in": "body",
384 "required": true,
385 "schema": {
386 "$ref": "#/definitions/handlers.CreateMapDiscussionRequest"
387 }
388 }
389 ],
390 "responses": {
391 "200": {
392 "description": "OK",
393 "schema": {
394 "allOf": [
395 {
396 "$ref": "#/definitions/models.Response"
397 },
398 {
399 "type": "object",
400 "properties": {
401 "data": {
402 "$ref": "#/definitions/handlers.CreateMapDiscussionRequest"
403 }
404 }
405 }
406 ]
407 }
408 }
409 }
410 }
411 },
412 "/maps/{mapid}/discussions/{discussionid}": {
413 "get": {
414 "description": "Get map discussion with specified map and discussion id.",
415 "produces": [
416 "application/json"
417 ],
418 "tags": [
419 "maps / discussions"
420 ],
421 "parameters": [
422 {
423 "type": "integer",
424 "description": "Map ID",
425 "name": "mapid",
426 "in": "path",
427 "required": true
428 },
429 {
430 "type": "integer",
431 "description": "Discussion ID",
432 "name": "discussionid",
433 "in": "path",
434 "required": true
435 }
436 ],
437 "responses": {
438 "200": {
439 "description": "OK",
440 "schema": {
441 "allOf": [
442 {
443 "$ref": "#/definitions/models.Response"
444 },
445 {
446 "type": "object",
447 "properties": {
448 "data": {
449 "$ref": "#/definitions/handlers.MapDiscussionResponse"
450 }
451 }
452 }
453 ]
454 }
455 }
456 }
457 },
458 "put": {
459 "description": "Edit map discussion with specified map id.",
460 "produces": [
461 "application/json"
462 ],
463 "tags": [
464 "maps / discussions"
465 ],
466 "parameters": [
467 {
468 "type": "string",
469 "description": "JWT Token",
470 "name": "Authorization",
471 "in": "header",
472 "required": true
473 },
474 {
475 "type": "integer",
476 "description": "Map ID",
477 "name": "mapid",
478 "in": "path",
479 "required": true
480 },
481 {
482 "type": "integer",
483 "description": "Discussion ID",
484 "name": "discussionid",
485 "in": "path",
486 "required": true
487 },
488 {
489 "description": "Body",
490 "name": "request",
491 "in": "body",
492 "required": true,
493 "schema": {
494 "$ref": "#/definitions/handlers.EditMapDiscussionRequest"
495 }
496 }
497 ],
498 "responses": {
499 "200": {
500 "description": "OK",
501 "schema": {
502 "allOf": [
503 {
504 "$ref": "#/definitions/models.Response"
505 },
506 {
507 "type": "object",
508 "properties": {
509 "data": {
510 "$ref": "#/definitions/handlers.EditMapDiscussionRequest"
511 }
512 }
513 }
514 ]
515 }
516 }
517 }
518 },
519 "post": {
520 "description": "Create map discussion comment with specified map id.",
521 "produces": [
522 "application/json"
523 ],
524 "tags": [
525 "maps / discussions"
526 ],
527 "parameters": [
528 {
529 "type": "string",
530 "description": "JWT Token",
531 "name": "Authorization",
532 "in": "header",
533 "required": true
534 },
535 {
536 "type": "integer",
537 "description": "Map ID",
538 "name": "mapid",
539 "in": "path",
540 "required": true
541 },
542 {
543 "type": "integer",
544 "description": "Discussion ID",
545 "name": "discussionid",
546 "in": "path",
547 "required": true
548 },
549 {
550 "description": "Body",
551 "name": "request",
552 "in": "body",
553 "required": true,
554 "schema": {
555 "$ref": "#/definitions/handlers.CreateMapDiscussionCommentRequest"
556 }
557 }
558 ],
559 "responses": {
560 "200": {
561 "description": "OK",
562 "schema": {
563 "allOf": [
564 {
565 "$ref": "#/definitions/models.Response"
566 },
567 {
568 "type": "object",
569 "properties": {
570 "data": {
571 "$ref": "#/definitions/handlers.CreateMapDiscussionCommentRequest"
572 }
573 }
574 }
575 ]
576 }
577 }
578 }
579 },
580 "delete": {
581 "description": "Delete map discussion with specified map id.",
582 "produces": [
583 "application/json"
584 ],
585 "tags": [
586 "maps / discussions"
587 ],
588 "parameters": [
589 {
590 "type": "string",
591 "description": "JWT Token",
592 "name": "Authorization",
593 "in": "header",
594 "required": true
595 },
596 {
597 "type": "integer",
598 "description": "Map ID",
599 "name": "mapid",
600 "in": "path",
601 "required": true
602 },
603 {
604 "type": "integer",
605 "description": "Discussion ID",
606 "name": "discussionid",
607 "in": "path",
608 "required": true
609 }
610 ],
611 "responses": {
612 "200": {
613 "description": "OK",
614 "schema": {
615 "$ref": "#/definitions/models.Response"
616 }
617 }
618 }
619 }
620 },
621 "/maps/{mapid}/image": {
622 "put": {
623 "description": "Edit map image with specified map id.",
624 "produces": [
625 "application/json"
626 ],
627 "tags": [
628 "maps / summary"
629 ],
630 "parameters": [
631 {
632 "type": "string",
633 "description": "JWT Token",
634 "name": "Authorization",
635 "in": "header",
636 "required": true
637 },
638 {
639 "type": "integer",
640 "description": "Map ID",
641 "name": "mapid",
642 "in": "path",
643 "required": true
644 },
645 {
646 "description": "Body",
647 "name": "request",
648 "in": "body",
649 "required": true,
650 "schema": {
651 "$ref": "#/definitions/handlers.EditMapImageRequest"
652 }
653 }
654 ],
655 "responses": {
656 "200": {
657 "description": "OK",
658 "schema": {
659 "allOf": [
660 {
661 "$ref": "#/definitions/models.Response"
662 },
663 {
664 "type": "object",
665 "properties": {
666 "data": {
667 "$ref": "#/definitions/handlers.EditMapImageRequest"
668 }
669 }
670 }
671 ]
672 }
673 }
674 }
675 }
676 },
677 "/maps/{mapid}/leaderboards": {
678 "get": {
679 "description": "Get map leaderboards with specified id.",
680 "produces": [
681 "application/json"
682 ],
683 "tags": [
684 "maps / leaderboards"
685 ],
686 "parameters": [
687 {
688 "type": "integer",
689 "description": "Map ID",
690 "name": "mapid",
691 "in": "path",
692 "required": true
693 },
694 {
695 "type": "integer",
696 "description": "Page Number (default: 1)",
697 "name": "page",
698 "in": "query"
699 },
700 {
701 "type": "integer",
702 "description": "Number of Records Per Page (default: 20)",
703 "name": "pageSize",
704 "in": "query"
705 }
706 ],
707 "responses": {
708 "200": {
709 "description": "OK",
710 "schema": {
711 "allOf": [
712 {
713 "$ref": "#/definitions/models.Response"
714 },
715 {
716 "type": "object",
717 "properties": {
718 "data": {
719 "$ref": "#/definitions/handlers.MapLeaderboardsResponse"
720 }
721 }
722 }
723 ]
724 }
725 }
726 }
727 }
728 },
729 "/maps/{mapid}/record": {
730 "post": {
731 "description": "Post record with demo of a specific map.",
732 "consumes": [
733 "multipart/form-data"
734 ],
735 "produces": [
736 "application/json"
737 ],
738 "tags": [
739 "maps / leaderboards"
740 ],
741 "parameters": [
742 {
743 "type": "integer",
744 "description": "Map ID",
745 "name": "mapid",
746 "in": "path",
747 "required": true
748 },
749 {
750 "type": "string",
751 "description": "JWT Token",
752 "name": "Authorization",
753 "in": "header",
754 "required": true
755 },
756 {
757 "type": "file",
758 "description": "Host Demo",
759 "name": "host_demo",
760 "in": "formData",
761 "required": true
762 },
763 {
764 "type": "file",
765 "description": "Partner Demo",
766 "name": "partner_demo",
767 "in": "formData"
768 },
769 {
770 "type": "boolean",
771 "description": "Is Partner Orange",
772 "name": "is_partner_orange",
773 "in": "formData"
774 },
775 {
776 "type": "string",
777 "description": "Partner ID",
778 "name": "partner_id",
779 "in": "formData"
780 }
781 ],
782 "responses": {
783 "200": {
784 "description": "OK",
785 "schema": {
786 "allOf": [
787 {
788 "$ref": "#/definitions/models.Response"
789 },
790 {
791 "type": "object",
792 "properties": {
793 "data": {
794 "$ref": "#/definitions/handlers.RecordResponse"
795 }
796 }
797 }
798 ]
799 }
800 }
801 }
802 }
803 },
804 "/maps/{mapid}/record/{recordid}": {
805 "delete": {
806 "description": "Delete record with specified map and record id.",
807 "produces": [
808 "application/json"
809 ],
810 "tags": [
811 "maps / leaderboards"
812 ],
813 "parameters": [
814 {
815 "type": "integer",
816 "description": "Map ID",
817 "name": "mapid",
818 "in": "path",
819 "required": true
820 },
821 {
822 "type": "integer",
823 "description": "Record ID",
824 "name": "recordid",
825 "in": "path",
826 "required": true
827 },
828 {
829 "type": "string",
830 "description": "JWT Token",
831 "name": "Authorization",
832 "in": "header",
833 "required": true
834 }
835 ],
836 "responses": {
837 "200": {
838 "description": "OK",
839 "schema": {
840 "$ref": "#/definitions/models.Response"
841 }
842 }
843 }
844 }
845 },
846 "/maps/{mapid}/summary": {
847 "get": {
848 "description": "Get map summary with specified id.",
849 "produces": [
850 "application/json"
851 ],
852 "tags": [
853 "maps / summary"
854 ],
855 "parameters": [
856 {
857 "type": "integer",
858 "description": "Map ID",
859 "name": "mapid",
860 "in": "path",
861 "required": true
862 }
863 ],
864 "responses": {
865 "200": {
866 "description": "OK",
867 "schema": {
868 "allOf": [
869 {
870 "$ref": "#/definitions/models.Response"
871 },
872 {
873 "type": "object",
874 "properties": {
875 "data": {
876 "$ref": "#/definitions/handlers.MapSummaryResponse"
877 }
878 }
879 }
880 ]
881 }
882 }
883 }
884 },
885 "put": {
886 "description": "Edit map summary with specified map id.",
887 "produces": [
888 "application/json"
889 ],
890 "tags": [
891 "maps / summary"
892 ],
893 "parameters": [
894 {
895 "type": "string",
896 "description": "JWT Token",
897 "name": "Authorization",
898 "in": "header",
899 "required": true
900 },
901 {
902 "type": "integer",
903 "description": "Map ID",
904 "name": "mapid",
905 "in": "path",
906 "required": true
907 },
908 {
909 "description": "Body",
910 "name": "request",
911 "in": "body",
912 "required": true,
913 "schema": {
914 "$ref": "#/definitions/handlers.EditMapSummaryRequest"
915 }
916 }
917 ],
918 "responses": {
919 "200": {
920 "description": "OK",
921 "schema": {
922 "allOf": [
923 {
924 "$ref": "#/definitions/models.Response"
925 },
926 {
927 "type": "object",
928 "properties": {
929 "data": {
930 "$ref": "#/definitions/handlers.EditMapSummaryRequest"
931 }
932 }
933 }
934 ]
935 }
936 }
937 }
938 },
939 "post": {
940 "description": "Create map summary with specified map id.",
941 "produces": [
942 "application/json"
943 ],
944 "tags": [
945 "maps / summary"
946 ],
947 "parameters": [
948 {
949 "type": "string",
950 "description": "JWT Token",
951 "name": "Authorization",
952 "in": "header",
953 "required": true
954 },
955 {
956 "type": "integer",
957 "description": "Map ID",
958 "name": "mapid",
959 "in": "path",
960 "required": true
961 },
962 {
963 "description": "Body",
964 "name": "request",
965 "in": "body",
966 "required": true,
967 "schema": {
968 "$ref": "#/definitions/handlers.CreateMapSummaryRequest"
969 }
970 }
971 ],
972 "responses": {
973 "200": {
974 "description": "OK",
975 "schema": {
976 "allOf": [
977 {
978 "$ref": "#/definitions/models.Response"
979 },
980 {
981 "type": "object",
982 "properties": {
983 "data": {
984 "$ref": "#/definitions/handlers.CreateMapSummaryRequest"
985 }
986 }
987 }
988 ]
989 }
990 }
991 }
992 },
993 "delete": {
994 "description": "Delete map summary with specified map id.",
995 "produces": [
996 "application/json"
997 ],
998 "tags": [
999 "maps / summary"
1000 ],
1001 "parameters": [
1002 {
1003 "type": "string",
1004 "description": "JWT Token",
1005 "name": "Authorization",
1006 "in": "header",
1007 "required": true
1008 },
1009 {
1010 "type": "integer",
1011 "description": "Map ID",
1012 "name": "mapid",
1013 "in": "path",
1014 "required": true
1015 },
1016 {
1017 "description": "Body",
1018 "name": "request",
1019 "in": "body",
1020 "required": true,
1021 "schema": {
1022 "$ref": "#/definitions/handlers.DeleteMapSummaryRequest"
1023 }
1024 }
1025 ],
1026 "responses": {
1027 "200": {
1028 "description": "OK",
1029 "schema": {
1030 "allOf": [
1031 {
1032 "$ref": "#/definitions/models.Response"
1033 },
1034 {
1035 "type": "object",
1036 "properties": {
1037 "data": {
1038 "$ref": "#/definitions/handlers.DeleteMapSummaryRequest"
1039 }
1040 }
1041 }
1042 ]
1043 }
1044 }
1045 }
1046 }
1047 },
1048 "/profile": {
1049 "get": {
1050 "description": "Get profile page of session user.",
1051 "consumes": [
1052 "application/json"
1053 ],
1054 "produces": [
1055 "application/json"
1056 ],
1057 "tags": [
1058 "users"
1059 ],
1060 "parameters": [
1061 {
1062 "type": "string",
1063 "description": "JWT Token",
1064 "name": "Authorization",
1065 "in": "header",
1066 "required": true
1067 }
1068 ],
1069 "responses": {
1070 "200": {
1071 "description": "OK",
1072 "schema": {
1073 "allOf": [
1074 {
1075 "$ref": "#/definitions/models.Response"
1076 },
1077 {
1078 "type": "object",
1079 "properties": {
1080 "data": {
1081 "$ref": "#/definitions/handlers.ProfileResponse"
1082 }
1083 }
1084 }
1085 ]
1086 }
1087 }
1088 }
1089 },
1090 "put": {
1091 "description": "Update country code of session user.",
1092 "consumes": [
1093 "application/json"
1094 ],
1095 "produces": [
1096 "application/json"
1097 ],
1098 "tags": [
1099 "users"
1100 ],
1101 "parameters": [
1102 {
1103 "type": "string",
1104 "description": "JWT Token",
1105 "name": "Authorization",
1106 "in": "header",
1107 "required": true
1108 },
1109 {
1110 "type": "string",
1111 "description": "Country Code [XX]",
1112 "name": "country_code",
1113 "in": "query",
1114 "required": true
1115 }
1116 ],
1117 "responses": {
1118 "200": {
1119 "description": "OK",
1120 "schema": {
1121 "$ref": "#/definitions/models.Response"
1122 }
1123 }
1124 }
1125 },
1126 "post": {
1127 "description": "Update profile page of session user.",
1128 "consumes": [
1129 "application/json"
1130 ],
1131 "produces": [
1132 "application/json"
1133 ],
1134 "tags": [
1135 "users"
1136 ],
1137 "parameters": [
1138 {
1139 "type": "string",
1140 "description": "JWT Token",
1141 "name": "Authorization",
1142 "in": "header",
1143 "required": true
1144 }
1145 ],
1146 "responses": {
1147 "200": {
1148 "description": "OK",
1149 "schema": {
1150 "allOf": [
1151 {
1152 "$ref": "#/definitions/models.Response"
1153 },
1154 {
1155 "type": "object",
1156 "properties": {
1157 "data": {
1158 "$ref": "#/definitions/handlers.ProfileResponse"
1159 }
1160 }
1161 }
1162 ]
1163 }
1164 }
1165 }
1166 }
1167 },
1168 "/rankings": {
1169 "get": {
1170 "description": "Get rankings of every player.",
1171 "produces": [
1172 "application/json"
1173 ],
1174 "tags": [
1175 "rankings"
1176 ],
1177 "responses": {
1178 "200": {
1179 "description": "OK",
1180 "schema": {
1181 "allOf": [
1182 {
1183 "$ref": "#/definitions/models.Response"
1184 },
1185 {
1186 "type": "object",
1187 "properties": {
1188 "data": {
1189 "$ref": "#/definitions/handlers.RankingsResponse"
1190 }
1191 }
1192 }
1193 ]
1194 }
1195 }
1196 }
1197 }
1198 },
1199 "/search": {
1200 "get": {
1201 "description": "Get all user and map data matching to the query.",
1202 "produces": [
1203 "application/json"
1204 ],
1205 "tags": [
1206 "search"
1207 ],
1208 "parameters": [
1209 {
1210 "type": "string",
1211 "description": "Search user or map name.",
1212 "name": "q",
1213 "in": "query"
1214 }
1215 ],
1216 "responses": {
1217 "200": {
1218 "description": "OK",
1219 "schema": {
1220 "allOf": [
1221 {
1222 "$ref": "#/definitions/models.Response"
1223 },
1224 {
1225 "type": "object",
1226 "properties": {
1227 "data": {
1228 "$ref": "#/definitions/handlers.SearchResponse"
1229 }
1230 }
1231 }
1232 ]
1233 }
1234 }
1235 }
1236 }
1237 },
1238 "/token": {
1239 "get": {
1240 "description": "Gets the token cookie value from the user.",
1241 "produces": [
1242 "application/json"
1243 ],
1244 "tags": [
1245 "auth"
1246 ],
1247 "responses": {
1248 "200": {
1249 "description": "OK",
1250 "schema": {
1251 "allOf": [
1252 {
1253 "$ref": "#/definitions/models.Response"
1254 },
1255 {
1256 "type": "object",
1257 "properties": {
1258 "data": {
1259 "$ref": "#/definitions/handlers.LoginResponse"
1260 }
1261 }
1262 }
1263 ]
1264 }
1265 },
1266 "404": {
1267 "description": "Not Found",
1268 "schema": {
1269 "$ref": "#/definitions/models.Response"
1270 }
1271 }
1272 }
1273 },
1274 "delete": {
1275 "description": "Deletes the token cookie from the user.",
1276 "produces": [
1277 "application/json"
1278 ],
1279 "tags": [
1280 "auth"
1281 ],
1282 "responses": {
1283 "200": {
1284 "description": "OK",
1285 "schema": {
1286 "allOf": [
1287 {
1288 "$ref": "#/definitions/models.Response"
1289 },
1290 {
1291 "type": "object",
1292 "properties": {
1293 "data": {
1294 "$ref": "#/definitions/handlers.LoginResponse"
1295 }
1296 }
1297 }
1298 ]
1299 }
1300 },
1301 "404": {
1302 "description": "Not Found",
1303 "schema": {
1304 "$ref": "#/definitions/models.Response"
1305 }
1306 }
1307 }
1308 }
1309 },
1310 "/users/{userid}": {
1311 "get": {
1312 "description": "Get profile page of another user.",
1313 "consumes": [
1314 "application/json"
1315 ],
1316 "produces": [
1317 "application/json"
1318 ],
1319 "tags": [
1320 "users"
1321 ],
1322 "parameters": [
1323 {
1324 "type": "integer",
1325 "description": "User ID",
1326 "name": "userid",
1327 "in": "path",
1328 "required": true
1329 }
1330 ],
1331 "responses": {
1332 "200": {
1333 "description": "OK",
1334 "schema": {
1335 "allOf": [
1336 {
1337 "$ref": "#/definitions/models.Response"
1338 },
1339 {
1340 "type": "object",
1341 "properties": {
1342 "data": {
1343 "$ref": "#/definitions/handlers.ProfileResponse"
1344 }
1345 }
1346 }
1347 ]
1348 }
1349 }
1350 }
1351 }
1352 }
1353 },
1354 "definitions": {
1355 "handlers.ChapterMapsResponse": {
1356 "type": "object",
1357 "properties": {
1358 "chapter": {
1359 "$ref": "#/definitions/models.Chapter"
1360 },
1361 "maps": {
1362 "type": "array",
1363 "items": {
1364 "$ref": "#/definitions/models.MapSelect"
1365 }
1366 }
1367 }
1368 },
1369 "handlers.ChaptersResponse": {
1370 "type": "object",
1371 "properties": {
1372 "chapters": {
1373 "type": "array",
1374 "items": {
1375 "$ref": "#/definitions/models.Chapter"
1376 }
1377 },
1378 "game": {
1379 "$ref": "#/definitions/models.Game"
1380 }
1381 }
1382 },
1383 "handlers.CreateMapDiscussionCommentRequest": {
1384 "type": "object",
1385 "required": [
1386 "comment"
1387 ],
1388 "properties": {
1389 "comment": {
1390 "type": "string"
1391 }
1392 }
1393 },
1394 "handlers.CreateMapDiscussionRequest": {
1395 "type": "object",
1396 "required": [
1397 "content",
1398 "title"
1399 ],
1400 "properties": {
1401 "content": {
1402 "type": "string"
1403 },
1404 "title": {
1405 "type": "string"
1406 }
1407 }
1408 },
1409 "handlers.CreateMapSummaryRequest": {
1410 "type": "object",
1411 "required": [
1412 "category_id",
1413 "description",
1414 "record_date",
1415 "score_count",
1416 "user_name"
1417 ],
1418 "properties": {
1419 "category_id": {
1420 "type": "integer"
1421 },
1422 "description": {
1423 "type": "string"
1424 },
1425 "record_date": {
1426 "type": "string"
1427 },
1428 "score_count": {
1429 "type": "integer"
1430 },
1431 "showcase": {
1432 "type": "string"
1433 },
1434 "user_name": {
1435 "type": "string"
1436 }
1437 }
1438 },
1439 "handlers.DeleteMapSummaryRequest": {
1440 "type": "object",
1441 "required": [
1442 "route_id"
1443 ],
1444 "properties": {
1445 "route_id": {
1446 "type": "integer"
1447 }
1448 }
1449 },
1450 "handlers.EditMapDiscussionRequest": {
1451 "type": "object",
1452 "required": [
1453 "content",
1454 "title"
1455 ],
1456 "properties": {
1457 "content": {
1458 "type": "string"
1459 },
1460 "title": {
1461 "type": "string"
1462 }
1463 }
1464 },
1465 "handlers.EditMapImageRequest": {
1466 "type": "object",
1467 "required": [
1468 "image"
1469 ],
1470 "properties": {
1471 "image": {
1472 "type": "string"
1473 }
1474 }
1475 },
1476 "handlers.EditMapSummaryRequest": {
1477 "type": "object",
1478 "required": [
1479 "description",
1480 "record_date",
1481 "route_id",
1482 "score_count",
1483 "user_name"
1484 ],
1485 "properties": {
1486 "description": {
1487 "type": "string"
1488 },
1489 "record_date": {
1490 "type": "string"
1491 },
1492 "route_id": {
1493 "type": "integer"
1494 },
1495 "score_count": {
1496 "type": "integer"
1497 },
1498 "showcase": {
1499 "type": "string"
1500 },
1501 "user_name": {
1502 "type": "string"
1503 }
1504 }
1505 },
1506 "handlers.LoginResponse": {
1507 "type": "object",
1508 "properties": {
1509 "token": {
1510 "type": "string"
1511 }
1512 }
1513 },
1514 "handlers.LogsResponse": {
1515 "type": "object",
1516 "properties": {
1517 "logs": {
1518 "type": "array",
1519 "items": {
1520 "$ref": "#/definitions/handlers.LogsResponseDetails"
1521 }
1522 }
1523 }
1524 },
1525 "handlers.LogsResponseDetails": {
1526 "type": "object",
1527 "properties": {
1528 "date": {
1529 "type": "string"
1530 },
1531 "detail": {
1532 "type": "string"
1533 },
1534 "message": {
1535 "type": "string"
1536 },
1537 "user": {
1538 "$ref": "#/definitions/models.UserShort"
1539 }
1540 }
1541 },
1542 "handlers.MapDiscussion": {
1543 "type": "object",
1544 "properties": {
1545 "comments": {
1546 "type": "array",
1547 "items": {
1548 "$ref": "#/definitions/handlers.MapDiscussionComment"
1549 }
1550 },
1551 "content": {
1552 "type": "string"
1553 },
1554 "created_at": {
1555 "description": "Upvotes int `json:\"upvotes\"`",
1556 "type": "string"
1557 },
1558 "creator": {
1559 "$ref": "#/definitions/models.UserShortWithAvatar"
1560 },
1561 "id": {
1562 "type": "integer"
1563 },
1564 "title": {
1565 "type": "string"
1566 },
1567 "updated_at": {
1568 "type": "string"
1569 }
1570 }
1571 },
1572 "handlers.MapDiscussionComment": {
1573 "type": "object",
1574 "properties": {
1575 "comment": {
1576 "type": "string"
1577 },
1578 "date": {
1579 "type": "string"
1580 },
1581 "user": {
1582 "$ref": "#/definitions/models.UserShortWithAvatar"
1583 }
1584 }
1585 },
1586 "handlers.MapDiscussionResponse": {
1587 "type": "object",
1588 "properties": {
1589 "discussion": {
1590 "$ref": "#/definitions/handlers.MapDiscussion"
1591 }
1592 }
1593 },
1594 "handlers.MapDiscussionsResponse": {
1595 "type": "object",
1596 "properties": {
1597 "discussions": {
1598 "type": "array",
1599 "items": {
1600 "$ref": "#/definitions/handlers.MapDiscussion"
1601 }
1602 }
1603 }
1604 },
1605 "handlers.MapLeaderboardsResponse": {
1606 "type": "object",
1607 "properties": {
1608 "map": {
1609 "$ref": "#/definitions/models.Map"
1610 },
1611 "pagination": {
1612 "$ref": "#/definitions/models.Pagination"
1613 },
1614 "records": {}
1615 }
1616 },
1617 "handlers.MapShortWithGame": {
1618 "type": "object",
1619 "properties": {
1620 "chapter": {
1621 "type": "string"
1622 },
1623 "game": {
1624 "type": "string"
1625 },
1626 "id": {
1627 "type": "integer"
1628 },
1629 "map": {
1630 "type": "string"
1631 }
1632 }
1633 },
1634 "handlers.MapSummaryResponse": {
1635 "type": "object",
1636 "properties": {
1637 "map": {
1638 "$ref": "#/definitions/models.Map"
1639 },
1640 "summary": {
1641 "$ref": "#/definitions/models.MapSummary"
1642 }
1643 }
1644 },
1645 "handlers.ProfileRankings": {
1646 "type": "object",
1647 "properties": {
1648 "cooperative": {
1649 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1650 },
1651 "overall": {
1652 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1653 },
1654 "singleplayer": {
1655 "$ref": "#/definitions/handlers.ProfileRankingsDetails"
1656 }
1657 }
1658 },
1659 "handlers.ProfileRankingsDetails": {
1660 "type": "object",
1661 "properties": {
1662 "completion_count": {
1663 "type": "integer"
1664 },
1665 "completion_total": {
1666 "type": "integer"
1667 },
1668 "rank": {
1669 "type": "integer"
1670 }
1671 }
1672 },
1673 "handlers.ProfileRecords": {
1674 "type": "object",
1675 "properties": {
1676 "category_id": {
1677 "type": "integer"
1678 },
1679 "game_id": {
1680 "type": "integer"
1681 },
1682 "map_id": {
1683 "type": "integer"
1684 },
1685 "map_name": {
1686 "type": "string"
1687 },
1688 "map_wr_count": {
1689 "type": "integer"
1690 },
1691 "placement": {
1692 "type": "integer"
1693 },
1694 "scores": {
1695 "type": "array",
1696 "items": {
1697 "$ref": "#/definitions/handlers.ProfileScores"
1698 }
1699 }
1700 }
1701 },
1702 "handlers.ProfileResponse": {
1703 "type": "object",
1704 "properties": {
1705 "avatar_link": {
1706 "type": "string"
1707 },
1708 "country_code": {
1709 "type": "string"
1710 },
1711 "links": {
1712 "$ref": "#/definitions/models.Links"
1713 },
1714 "pagination": {
1715 "$ref": "#/definitions/models.Pagination"
1716 },
1717 "profile": {
1718 "type": "boolean"
1719 },
1720 "rankings": {
1721 "$ref": "#/definitions/handlers.ProfileRankings"
1722 },
1723 "records": {
1724 "type": "array",
1725 "items": {
1726 "$ref": "#/definitions/handlers.ProfileRecords"
1727 }
1728 },
1729 "steam_id": {
1730 "type": "string"
1731 },
1732 "titles": {
1733 "type": "array",
1734 "items": {
1735 "$ref": "#/definitions/models.Title"
1736 }
1737 },
1738 "user_name": {
1739 "type": "string"
1740 }
1741 }
1742 },
1743 "handlers.ProfileScores": {
1744 "type": "object",
1745 "properties": {
1746 "date": {
1747 "type": "string"
1748 },
1749 "demo_id": {
1750 "type": "string"
1751 },
1752 "record_id": {
1753 "type": "integer"
1754 },
1755 "score_count": {
1756 "type": "integer"
1757 },
1758 "score_time": {
1759 "type": "integer"
1760 }
1761 }
1762 },
1763 "handlers.RankingsResponse": {
1764 "type": "object",
1765 "properties": {
1766 "rankings_multiplayer": {
1767 "type": "array",
1768 "items": {
1769 "$ref": "#/definitions/models.UserRanking"
1770 }
1771 },
1772 "rankings_overall": {
1773 "type": "array",
1774 "items": {
1775 "$ref": "#/definitions/models.UserRanking"
1776 }
1777 },
1778 "rankings_singleplayer": {
1779 "type": "array",
1780 "items": {
1781 "$ref": "#/definitions/models.UserRanking"
1782 }
1783 }
1784 }
1785 },
1786 "handlers.RecordResponse": {
1787 "type": "object",
1788 "properties": {
1789 "score_count": {
1790 "type": "integer"
1791 },
1792 "score_time": {
1793 "type": "integer"
1794 }
1795 }
1796 },
1797 "handlers.ScoreLogsResponse": {
1798 "type": "object",
1799 "properties": {
1800 "scores": {
1801 "type": "array",
1802 "items": {
1803 "$ref": "#/definitions/handlers.ScoreLogsResponseDetails"
1804 }
1805 }
1806 }
1807 },
1808 "handlers.ScoreLogsResponseDetails": {
1809 "type": "object",
1810 "properties": {
1811 "date": {
1812 "type": "string"
1813 },
1814 "demo_id": {
1815 "type": "string"
1816 },
1817 "game": {
1818 "$ref": "#/definitions/models.Game"
1819 },
1820 "map": {
1821 "$ref": "#/definitions/models.MapShort"
1822 },
1823 "score_count": {
1824 "type": "integer"
1825 },
1826 "score_time": {
1827 "type": "integer"
1828 },
1829 "user": {
1830 "$ref": "#/definitions/models.UserShort"
1831 }
1832 }
1833 },
1834 "handlers.SearchResponse": {
1835 "type": "object",
1836 "properties": {
1837 "maps": {
1838 "type": "array",
1839 "items": {
1840 "$ref": "#/definitions/handlers.MapShortWithGame"
1841 }
1842 },
1843 "players": {
1844 "type": "array",
1845 "items": {
1846 "$ref": "#/definitions/models.UserShortWithAvatar"
1847 }
1848 }
1849 }
1850 },
1851 "models.Category": {
1852 "type": "object",
1853 "properties": {
1854 "id": {
1855 "type": "integer"
1856 },
1857 "name": {
1858 "type": "string"
1859 }
1860 }
1861 },
1862 "models.CategoryPortal": {
1863 "type": "object",
1864 "properties": {
1865 "category": {
1866 "$ref": "#/definitions/models.Category"
1867 },
1868 "portal_count": {
1869 "type": "integer"
1870 }
1871 }
1872 },
1873 "models.Chapter": {
1874 "type": "object",
1875 "properties": {
1876 "id": {
1877 "type": "integer"
1878 },
1879 "image": {
1880 "type": "string"
1881 },
1882 "is_disabled": {
1883 "type": "boolean"
1884 },
1885 "name": {
1886 "type": "string"
1887 }
1888 }
1889 },
1890 "models.Game": {
1891 "type": "object",
1892 "properties": {
1893 "category_portals": {
1894 "type": "array",
1895 "items": {
1896 "$ref": "#/definitions/models.CategoryPortal"
1897 }
1898 },
1899 "id": {
1900 "type": "integer"
1901 },
1902 "image": {
1903 "type": "string"
1904 },
1905 "is_coop": {
1906 "type": "boolean"
1907 },
1908 "name": {
1909 "type": "string"
1910 }
1911 }
1912 },
1913 "models.Links": {
1914 "type": "object",
1915 "properties": {
1916 "p2sr": {
1917 "type": "string"
1918 },
1919 "steam": {
1920 "type": "string"
1921 },
1922 "twitch": {
1923 "type": "string"
1924 },
1925 "youtube": {
1926 "type": "string"
1927 }
1928 }
1929 },
1930 "models.Map": {
1931 "type": "object",
1932 "properties": {
1933 "chapter_name": {
1934 "type": "string"
1935 },
1936 "game_name": {
1937 "type": "string"
1938 },
1939 "id": {
1940 "type": "integer"
1941 },
1942 "image": {
1943 "type": "string"
1944 },
1945 "is_coop": {
1946 "type": "boolean"
1947 },
1948 "is_disabled": {
1949 "type": "boolean"
1950 },
1951 "map_name": {
1952 "type": "string"
1953 }
1954 }
1955 },
1956 "models.MapHistory": {
1957 "type": "object",
1958 "properties": {
1959 "date": {
1960 "type": "string"
1961 },
1962 "runner_name": {
1963 "type": "string"
1964 },
1965 "score_count": {
1966 "type": "integer"
1967 }
1968 }
1969 },
1970 "models.MapRoute": {
1971 "type": "object",
1972 "properties": {
1973 "category": {
1974 "$ref": "#/definitions/models.Category"
1975 },
1976 "completion_count": {
1977 "type": "integer"
1978 },
1979 "description": {
1980 "type": "string"
1981 },
1982 "history": {
1983 "$ref": "#/definitions/models.MapHistory"
1984 },
1985 "rating": {
1986 "type": "number"
1987 },
1988 "route_id": {
1989 "type": "integer"
1990 },
1991 "showcase": {
1992 "type": "string"
1993 }
1994 }
1995 },
1996 "models.MapSelect": {
1997 "type": "object",
1998 "properties": {
1999 "category_portals": {
2000 "type": "array",
2001 "items": {
2002 "$ref": "#/definitions/models.CategoryPortal"
2003 }
2004 },
2005 "difficulty": {
2006 "type": "integer"
2007 },
2008 "id": {
2009 "type": "integer"
2010 },
2011 "image": {
2012 "type": "string"
2013 },
2014 "is_disabled": {
2015 "type": "boolean"
2016 },
2017 "name": {
2018 "type": "string"
2019 }
2020 }
2021 },
2022 "models.MapShort": {
2023 "type": "object",
2024 "properties": {
2025 "difficulty": {
2026 "type": "integer"
2027 },
2028 "id": {
2029 "type": "integer"
2030 },
2031 "image": {
2032 "type": "string"
2033 },
2034 "is_disabled": {
2035 "type": "boolean"
2036 },
2037 "name": {
2038 "type": "string"
2039 },
2040 "portal_count": {
2041 "type": "integer"
2042 }
2043 }
2044 },
2045 "models.MapSummary": {
2046 "type": "object",
2047 "properties": {
2048 "routes": {
2049 "type": "array",
2050 "items": {
2051 "$ref": "#/definitions/models.MapRoute"
2052 }
2053 }
2054 }
2055 },
2056 "models.Pagination": {
2057 "type": "object",
2058 "properties": {
2059 "current_page": {
2060 "type": "integer"
2061 },
2062 "page_size": {
2063 "type": "integer"
2064 },
2065 "total_pages": {
2066 "type": "integer"
2067 },
2068 "total_records": {
2069 "type": "integer"
2070 }
2071 }
2072 },
2073 "models.Response": {
2074 "type": "object",
2075 "properties": {
2076 "data": {},
2077 "message": {
2078 "type": "string"
2079 },
2080 "success": {
2081 "type": "boolean"
2082 }
2083 }
2084 },
2085 "models.Title": {
2086 "type": "object",
2087 "properties": {
2088 "color": {
2089 "type": "string"
2090 },
2091 "name": {
2092 "type": "string"
2093 }
2094 }
2095 },
2096 "models.UserRanking": {
2097 "type": "object",
2098 "properties": {
2099 "placement": {
2100 "type": "integer"
2101 },
2102 "total_score": {
2103 "type": "integer"
2104 },
2105 "user": {
2106 "$ref": "#/definitions/models.UserShortWithAvatar"
2107 }
2108 }
2109 },
2110 "models.UserShort": {
2111 "type": "object",
2112 "properties": {
2113 "steam_id": {
2114 "type": "string"
2115 },
2116 "user_name": {
2117 "type": "string"
2118 }
2119 }
2120 },
2121 "models.UserShortWithAvatar": {
2122 "type": "object",
2123 "properties": {
2124 "avatar_link": {
2125 "type": "string"
2126 },
2127 "steam_id": {
2128 "type": "string"
2129 },
2130 "user_name": {
2131 "type": "string"
2132 }
2133 }
2134 }
2135 }
2136} \ No newline at end of file