@@ -1,13683 +0,0 @@
1{
2 "openapi": "3.1.0",
3 "info": {
4 "title": "gitdata admin api",
5 "description": "GitData 管理后台 API。独立进程(adminhost)、独立会话 Cookie(gitdata_admin_session)、固定角色 super_admin/operator/viewer。",
6 "license": {
7 "name": ""
8 },
9 "version": "1.0"
10 },
11 "servers": [
12 {
13 "url": "/api/v1"
14 }
15 ],
16 "paths": {
17 "/admin/act/runs": {
18 "get": {
19 "tags": [
20 "admin-act"
21 ],
22 "description": "分页列出 act 工作流运行。",
23 "operationId": "list_runs",
24 "parameters": [
25 {
26 "name": "q",
27 "in": "query",
28 "required": false,
29 "schema": {
30 "type": [
31 "string",
32 "null"
33 ]
34 }
35 },
36 {
37 "name": "state",
38 "in": "query",
39 "required": false,
40 "schema": {
41 "oneOf": [
42 {
43 "type": "null"
44 },
45 {
46 "$ref": "#/components/schemas/WorkflowRunState"
47 }
48 ]
49 }
50 },
51 {
52 "name": "repo_id",
53 "in": "query",
54 "required": false,
55 "schema": {
56 "type": [
57 "string",
58 "null"
59 ],
60 "format": "uuid"
61 }
62 },
63 {
64 "name": "limit",
65 "in": "query",
66 "required": false,
67 "schema": {
68 "type": [
69 "integer",
70 "null"
71 ],
72 "format": "int64",
73 "minimum": 0
74 }
75 },
76 {
77 "name": "offset",
78 "in": "query",
79 "required": false,
80 "schema": {
81 "type": [
82 "integer",
83 "null"
84 ],
85 "format": "int64",
86 "minimum": 0
87 }
88 }
89 ],
90 "responses": {
91 "200": {
92 "description": "act runs",
93 "content": {
94 "application/json": {
95 "schema": {
96 "$ref": "#/components/schemas/AppResponseData_AdminActRunPage"
97 }
98 }
99 }
100 }
101 }
102 }
103 },
104 "/admin/act/runs/{id}/cancel": {
105 "post": {
106 "tags": [
107 "admin-act"
108 ],
109 "description": "请求取消 act 工作流运行。",
110 "operationId": "cancel_run",
111 "parameters": [
112 {
113 "name": "id",
114 "in": "path",
115 "required": true,
116 "schema": {
117 "type": "string",
118 "format": "uuid"
119 }
120 }
121 ],
122 "responses": {
123 "200": {
124 "description": "cancel requested",
125 "content": {
126 "application/json": {
127 "schema": {
128 "$ref": "#/components/schemas/AppResponseData_String"
129 }
130 }
131 }
132 }
133 }
134 }
135 },
136 "/admin/act/runs/{id}/rerun": {
137 "post": {
138 "tags": [
139 "admin-act"
140 ],
141 "description": "重新运行 act 工作流。",
142 "operationId": "rerun_run",
143 "parameters": [
144 {
145 "name": "id",
146 "in": "path",
147 "required": true,
148 "schema": {
149 "type": "string",
150 "format": "uuid"
151 }
152 }
153 ],
154 "responses": {
155 "200": {
156 "description": "rerun created",
157 "content": {
158 "application/json": {
159 "schema": {
160 "$ref": "#/components/schemas/AppResponseData_String"
161 }
162 }
163 }
164 }
165 }
166 }
167 },
168 "/admin/act/summary": {
169 "get": {
170 "tags": [
171 "admin-act"
172 ],
173 "description": "读取 act runner、作业和运行概览。",
174 "operationId": "summary",
175 "responses": {
176 "200": {
177 "description": "act summary",
178 "content": {
179 "application/json": {
180 "schema": {
181 "$ref": "#/components/schemas/AppResponseData_AdminActSummary"
182 }
183 }
184 }
185 }
186 }
187 }
188 },
189 "/admin/admins": {
190 "get": {
191 "tags": [
192 "admin-admins"
193 ],
194 "description": "管理员账号列表;仅超级管理员可见。",
195 "operationId": "list_admins",
196 "parameters": [
197 {
198 "name": "limit",
199 "in": "query",
200 "required": false,
201 "schema": {
202 "type": [
203 "integer",
204 "null"
205 ],
206 "format": "int64",
207 "minimum": 0
208 }
209 },
210 {
211 "name": "offset",
212 "in": "query",
213 "required": false,
214 "schema": {
215 "type": [
216 "integer",
217 "null"
218 ],
219 "format": "int64",
220 "minimum": 0
221 }
222 },
223 {
224 "name": "sort",
225 "in": "query",
226 "required": false,
227 "schema": {
228 "type": [
229 "string",
230 "null"
231 ]
232 }
233 }
234 ],
235 "responses": {
236 "200": {
237 "description": "admin page",
238 "content": {
239 "application/json": {
240 "schema": {
241 "$ref": "#/components/schemas/AppResponseData_Page_AdminDto"
242 }
243 }
244 }
245 },
246 "401": {
247 "description": "authentication required",
248 "content": {
249 "application/json": {
250 "schema": {
251 "$ref": "#/components/schemas/AppResponseData_NoData"
252 }
253 }
254 }
255 },
256 "403": {
257 "description": "operation not allowed",
258 "content": {
259 "application/json": {
260 "schema": {
261 "$ref": "#/components/schemas/AppResponseData_NoData"
262 }
263 }
264 }
265 }
266 }
267 },
268 "post": {
269 "tags": [
270 "admin-admins"
271 ],
272 "description": "创建管理员账号;仅超级管理员可操作。",
273 "operationId": "create_admin",
274 "requestBody": {
275 "content": {
276 "application/json": {
277 "schema": {
278 "$ref": "#/components/schemas/CreateAdminCmd"
279 }
280 }
281 },
282 "required": true
283 },
284 "responses": {
285 "200": {
286 "description": "admin created",
287 "content": {
288 "application/json": {
289 "schema": {
290 "$ref": "#/components/schemas/AppResponseData_AdminDto"
291 }
292 }
293 }
294 },
295 "400": {
296 "description": "request failed validation",
297 "content": {
298 "application/json": {
299 "schema": {
300 "$ref": "#/components/schemas/AppResponseData_NoData"
301 }
302 }
303 }
304 },
305 "409": {
306 "description": "resource conflict",
307 "content": {
308 "application/json": {
309 "schema": {
310 "$ref": "#/components/schemas/AppResponseData_NoData"
311 }
312 }
313 }
314 }
315 }
316 }
317 },
318 "/admin/admins/{id}": {
319 "get": {
320 "tags": [
321 "admin-admins"
322 ],
323 "description": "管理员账号详情。",
324 "operationId": "get_admin",
325 "parameters": [
326 {
327 "name": "id",
328 "in": "path",
329 "description": "admin id",
330 "required": true,
331 "schema": {
332 "type": "string",
333 "format": "uuid"
334 }
335 }
336 ],
337 "responses": {
338 "200": {
339 "description": "admin detail",
340 "content": {
341 "application/json": {
342 "schema": {
343 "$ref": "#/components/schemas/AppResponseData_AdminDto"
344 }
345 }
346 }
347 },
348 "404": {
349 "description": "resource not found",
350 "content": {
351 "application/json": {
352 "schema": {
353 "$ref": "#/components/schemas/AppResponseData_NoData"
354 }
355 }
356 }
357 }
358 }
359 },
360 "delete": {
361 "tags": [
362 "admin-admins"
363 ],
364 "description": "删除管理员账号;禁止删除自己与最后一个超级管理员。",
365 "operationId": "delete_admin",
366 "parameters": [
367 {
368 "name": "id",
369 "in": "path",
370 "description": "admin id",
371 "required": true,
372 "schema": {
373 "type": "string",
374 "format": "uuid"
375 }
376 }
377 ],
378 "responses": {
379 "200": {
380 "description": "admin deleted",
381 "content": {
382 "application/json": {
383 "schema": {
384 "$ref": "#/components/schemas/AppResponseData_NoData"
385 }
386 }
387 }
388 },
389 "404": {
390 "description": "resource not found",
391 "content": {
392 "application/json": {
393 "schema": {
394 "$ref": "#/components/schemas/AppResponseData_NoData"
395 }
396 }
397 }
398 },
399 "409": {
400 "description": "resource conflict",
401 "content": {
402 "application/json": {
403 "schema": {
404 "$ref": "#/components/schemas/AppResponseData_NoData"
405 }
406 }
407 }
408 }
409 }
410 },
411 "patch": {
412 "tags": [
413 "admin-admins"
414 ],
415 "description": "更新管理员显示名/角色/启用状态;禁止操作最后一个超级管理员。",
416 "operationId": "update_admin",
417 "parameters": [
418 {
419 "name": "id",
420 "in": "path",
421 "description": "admin id",
422 "required": true,
423 "schema": {
424 "type": "string",
425 "format": "uuid"
426 }
427 }
428 ],
429 "requestBody": {
430 "content": {
431 "application/json": {
432 "schema": {
433 "$ref": "#/components/schemas/UpdateAdminCmd"
434 }
435 }
436 },
437 "required": true
438 },
439 "responses": {
440 "200": {
441 "description": "admin updated",
442 "content": {
443 "application/json": {
444 "schema": {
445 "$ref": "#/components/schemas/AppResponseData_AdminDto"
446 }
447 }
448 }
449 },
450 "409": {
451 "description": "resource conflict",
452 "content": {
453 "application/json": {
454 "schema": {
455 "$ref": "#/components/schemas/AppResponseData_NoData"
456 }
457 }
458 }
459 }
460 }
461 }
462 },
463 "/admin/admins/{id}/reset-password": {
464 "post": {
465 "tags": [
466 "admin-admins"
467 ],
468 "description": "重置管理员口令并要求下次登录强制改密。",
469 "operationId": "reset_admin_password",
470 "parameters": [
471 {
472 "name": "id",
473 "in": "path",
474 "description": "admin id",
475 "required": true,
476 "schema": {
477 "type": "string",
478 "format": "uuid"
479 }
480 }
481 ],
482 "requestBody": {
483 "content": {
484 "application/json": {
485 "schema": {
486 "$ref": "#/components/schemas/ResetAdminPasswordCmd"
487 }
488 }
489 },
490 "required": true
491 },
492 "responses": {
493 "200": {
494 "description": "password reset",
495 "content": {
496 "application/json": {
497 "schema": {
498 "$ref": "#/components/schemas/AppResponseData_NoData"
499 }
500 }
501 }
502 },
503 "400": {
504 "description": "request failed validation",
505 "content": {
506 "application/json": {
507 "schema": {
508 "$ref": "#/components/schemas/AppResponseData_NoData"
509 }
510 }
511 }
512 },
513 "404": {
514 "description": "resource not found",
515 "content": {
516 "application/json": {
517 "schema": {
518 "$ref": "#/components/schemas/AppResponseData_NoData"
519 }
520 }
521 }
522 }
523 }
524 }
525 },
526 "/admin/admins/{id}/revoke-sessions": {
527 "post": {
528 "tags": [
529 "admin-admins"
530 ],
531 "description": "踢出管理员全部会话:提升口令版本使已签发会话立即失效;操作他人需超级管理员。",
532 "operationId": "revoke_admin_sessions",
533 "parameters": [
534 {
535 "name": "id",
536 "in": "path",
537 "description": "admin id",
538 "required": true,
539 "schema": {
540 "type": "string",
541 "format": "uuid"
542 }
543 }
544 ],
545 "responses": {
546 "200": {
547 "description": "sessions revoked",
548 "content": {
549 "application/json": {
550 "schema": {
551 "$ref": "#/components/schemas/AppResponseData_NoData"
552 }
553 }
554 }
555 },
556 "403": {
557 "description": "operation not allowed",
558 "content": {
559 "application/json": {
560 "schema": {
561 "$ref": "#/components/schemas/AppResponseData_NoData"
562 }
563 }
564 }
565 },
566 "404": {
567 "description": "resource not found",
568 "content": {
569 "application/json": {
570 "schema": {
571 "$ref": "#/components/schemas/AppResponseData_NoData"
572 }
573 }
574 }
575 }
576 }
577 }
578 },
579 "/admin/auth/login": {
580 "post": {
581 "tags": [
582 "admin-auth"
583 ],
584 "description": "管理员用户名口令登录;会话使用独立的 gitdata_admin_session Cookie。",
585 "operationId": "login",
586 "requestBody": {
587 "content": {
588 "application/json": {
589 "schema": {
590 "$ref": "#/components/schemas/AdminLoginCmd"
591 }
592 }
593 },
594 "required": true
595 },
596 "responses": {
597 "200": {
598 "description": "login accepted",
599 "content": {
600 "application/json": {
601 "schema": {
602 "$ref": "#/components/schemas/AppResponseData_AdminLoginResp"
603 }
604 }
605 }
606 },
607 "400": {
608 "description": "request failed validation",
609 "content": {
610 "application/json": {
611 "schema": {
612 "$ref": "#/components/schemas/AppResponseData_NoData"
613 }
614 }
615 }
616 },
617 "401": {
618 "description": "invalid credentials",
619 "content": {
620 "application/json": {
621 "schema": {
622 "$ref": "#/components/schemas/AppResponseData_NoData"
623 }
624 }
625 }
626 },
627 "429": {
628 "description": "rate limit exceeded",
629 "content": {
630 "application/json": {
631 "schema": {
632 "$ref": "#/components/schemas/AppResponseData_NoData"
633 }
634 }
635 }
636 }
637 }
638 }
639 },
640 "/admin/auth/logout": {
641 "post": {
642 "tags": [
643 "admin-auth"
644 ],
645 "description": "退出管理端会话;重复调用始终返回成功。",
646 "operationId": "logout",
647 "responses": {
648 "200": {
649 "description": "logged out",
650 "content": {
651 "application/json": {
652 "schema": {
653 "$ref": "#/components/schemas/AppResponseData_NoData"
654 }
655 }
656 }
657 }
658 }
659 }
660 },
661 "/admin/chat/attachments": {
662 "get": {
663 "tags": [
664 "admin-chat"
665 ],
666 "description": "聊天附件列表:按房间/上传者/状态/文件名筛选。",
667 "operationId": "list_attachments",
668 "parameters": [
669 {
670 "name": "room_id",
671 "in": "query",
672 "required": false,
673 "schema": {
674 "type": [
675 "string",
676 "null"
677 ],
678 "format": "uuid"
679 }
680 },
681 {
682 "name": "user_id",
683 "in": "query",
684 "required": false,
685 "schema": {
686 "type": [
687 "string",
688 "null"
689 ],
690 "format": "uuid"
691 }
692 },
693 {
694 "name": "status",
695 "in": "query",
696 "required": false,
697 "schema": {
698 "type": [
699 "string",
700 "null"
701 ]
702 }
703 },
704 {
705 "name": "q",
706 "in": "query",
707 "required": false,
708 "schema": {
709 "type": [
710 "string",
711 "null"
712 ]
713 }
714 },
715 {
716 "name": "limit",
717 "in": "query",
718 "required": false,
719 "schema": {
720 "type": [
721 "integer",
722 "null"
723 ],
724 "format": "int64",
725 "minimum": 0
726 }
727 },
728 {
729 "name": "offset",
730 "in": "query",
731 "required": false,
732 "schema": {
733 "type": [
734 "integer",
735 "null"
736 ],
737 "format": "int64",
738 "minimum": 0
739 }
740 }
741 ],
742 "responses": {
743 "200": {
744 "description": "attachment page",
745 "content": {
746 "application/json": {
747 "schema": {
748 "$ref": "#/components/schemas/AppResponseData_Page_AdminChatAttachmentDto"
749 }
750 }
751 }
752 },
753 "401": {
754 "description": "authentication required",
755 "content": {
756 "application/json": {
757 "schema": {
758 "$ref": "#/components/schemas/AppResponseData_NoData"
759 }
760 }
761 }
762 }
763 }
764 }
765 },
766 "/admin/chat/attachments/{id}": {
767 "delete": {
768 "tags": [
769 "admin-chat"
770 ],
771 "description": "删除聊天附件记录并清理未被其它记录引用的对象存储文件;仅超级管理员可操作。",
772 "operationId": "delete_attachment",
773 "parameters": [
774 {
775 "name": "id",
776 "in": "path",
777 "description": "attachment id",
778 "required": true,
779 "schema": {
780 "type": "string",
781 "format": "uuid"
782 }
783 }
784 ],
785 "responses": {
786 "200": {
787 "description": "attachment deleted",
788 "content": {
789 "application/json": {
790 "schema": {
791 "$ref": "#/components/schemas/AppResponseData_DeleteChatAttachmentResp"
792 }
793 }
794 }
795 },
796 "404": {
797 "description": "resource not found",
798 "content": {
799 "application/json": {
800 "schema": {
801 "$ref": "#/components/schemas/AppResponseData_NoData"
802 }
803 }
804 }
805 }
806 }
807 }
808 },
809 "/admin/chat/messages": {
810 "get": {
811 "tags": [
812 "admin-chat"
813 ],
814 "description": "消息列表:按房间/作者/状态/关键字/时间筛选,返回附件与表情计数。",
815 "operationId": "list_messages",
816 "parameters": [
817 {
818 "name": "room_id",
819 "in": "query",
820 "required": false,
821 "schema": {
822 "type": [
823 "string",
824 "null"
825 ],
826 "format": "uuid"
827 }
828 },
829 {
830 "name": "author_id",
831 "in": "query",
832 "required": false,
833 "schema": {
834 "type": [
835 "string",
836 "null"
837 ],
838 "format": "uuid"
839 }
840 },
841 {
842 "name": "status",
843 "in": "query",
844 "required": false,
845 "schema": {
846 "type": [
847 "string",
848 "null"
849 ]
850 }
851 },
852 {
853 "name": "q",
854 "in": "query",
855 "required": false,
856 "schema": {
857 "type": [
858 "string",
859 "null"
860 ]
861 }
862 },
863 {
864 "name": "from",
865 "in": "query",
866 "required": false,
867 "schema": {
868 "type": [
869 "string",
870 "null"
871 ],
872 "format": "date-time"
873 }
874 },
875 {
876 "name": "to",
877 "in": "query",
878 "required": false,
879 "schema": {
880 "type": [
881 "string",
882 "null"
883 ],
884 "format": "date-time"
885 }
886 },
887 {
888 "name": "limit",
889 "in": "query",
890 "required": false,
891 "schema": {
892 "type": [
893 "integer",
894 "null"
895 ],
896 "format": "int64",
897 "minimum": 0
898 }
899 },
900 {
901 "name": "offset",
902 "in": "query",
903 "required": false,
904 "schema": {
905 "type": [
906 "integer",
907 "null"
908 ],
909 "format": "int64",
910 "minimum": 0
911 }
912 }
913 ],
914 "responses": {
915 "200": {
916 "description": "message page",
917 "content": {
918 "application/json": {
919 "schema": {
920 "$ref": "#/components/schemas/AppResponseData_Page_AdminChatMessageDto"
921 }
922 }
923 }
924 },
925 "401": {
926 "description": "authentication required",
927 "content": {
928 "application/json": {
929 "schema": {
930 "$ref": "#/components/schemas/AppResponseData_NoData"
931 }
932 }
933 }
934 }
935 }
936 }
937 },
938 "/admin/chat/messages/bulk-delete": {
939 "post": {
940 "tags": [
941 "admin-chat"
942 ],
943 "description": "批量软删除消息(≤100 条),清空内容并移除附件/表情/编辑等从属记录。",
944 "operationId": "bulk_delete_messages",
945 "requestBody": {
946 "content": {
947 "application/json": {
948 "schema": {
949 "$ref": "#/components/schemas/BulkDeleteChatMessagesCmd"
950 }
951 }
952 },
953 "required": true
954 },
955 "responses": {
956 "200": {
957 "description": "bulk delete result",
958 "content": {
959 "application/json": {
960 "schema": {
961 "$ref": "#/components/schemas/AppResponseData_BulkDeleteChatMessagesResp"
962 }
963 }
964 }
965 },
966 "400": {
967 "description": "request failed validation",
968 "content": {
969 "application/json": {
970 "schema": {
971 "$ref": "#/components/schemas/AppResponseData_NoData"
972 }
973 }
974 }
975 }
976 }
977 }
978 },
979 "/admin/chat/messages/export": {
980 "get": {
981 "tags": [
982 "admin-chat"
983 ],
984 "description": "按当前筛选导出消息 CSV(最多 10000 行)。",
985 "operationId": "export_messages",
986 "parameters": [
987 {
988 "name": "room_id",
989 "in": "query",
990 "required": false,
991 "schema": {
992 "type": [
993 "string",
994 "null"
995 ],
996 "format": "uuid"
997 }
998 },
999 {
1000 "name": "author_id",
1001 "in": "query",
1002 "required": false,
1003 "schema": {
1004 "type": [
1005 "string",
1006 "null"
1007 ],
1008 "format": "uuid"
1009 }
1010 },
1011 {
1012 "name": "status",
1013 "in": "query",
1014 "required": false,
1015 "schema": {
1016 "type": [
1017 "string",
1018 "null"
1019 ]
1020 }
1021 },
1022 {
1023 "name": "q",
1024 "in": "query",
1025 "required": false,
1026 "schema": {
1027 "type": [
1028 "string",
1029 "null"
1030 ]
1031 }
1032 },
1033 {
1034 "name": "from",
1035 "in": "query",
1036 "required": false,
1037 "schema": {
1038 "type": [
1039 "string",
1040 "null"
1041 ],
1042 "format": "date-time"
1043 }
1044 },
1045 {
1046 "name": "to",
1047 "in": "query",
1048 "required": false,
1049 "schema": {
1050 "type": [
1051 "string",
1052 "null"
1053 ],
1054 "format": "date-time"
1055 }
1056 },
1057 {
1058 "name": "limit",
1059 "in": "query",
1060 "required": false,
1061 "schema": {
1062 "type": [
1063 "integer",
1064 "null"
1065 ],
1066 "format": "int64",
1067 "minimum": 0
1068 }
1069 },
1070 {
1071 "name": "offset",
1072 "in": "query",
1073 "required": false,
1074 "schema": {
1075 "type": [
1076 "integer",
1077 "null"
1078 ],
1079 "format": "int64",
1080 "minimum": 0
1081 }
1082 }
1083 ],
1084 "responses": {
1085 "200": {
1086 "description": "csv export"
1087 }
1088 }
1089 }
1090 },
1091 "/admin/chat/messages/{id}": {
1092 "get": {
1093 "tags": [
1094 "admin-chat"
1095 ],
1096 "description": "消息详情:正文、编辑历史、表情聚合、附件与所属线程。",
1097 "operationId": "get_message",
1098 "parameters": [
1099 {
1100 "name": "id",
1101 "in": "path",
1102 "description": "message id",
1103 "required": true,
1104 "schema": {
1105 "type": "string",
1106 "format": "uuid"
1107 }
1108 }
1109 ],
1110 "responses": {
1111 "200": {
1112 "description": "message detail",
1113 "content": {
1114 "application/json": {
1115 "schema": {
1116 "$ref": "#/components/schemas/AppResponseData_AdminChatMessageDetail"
1117 }
1118 }
1119 }
1120 },
1121 "404": {
1122 "description": "resource not found",
1123 "content": {
1124 "application/json": {
1125 "schema": {
1126 "$ref": "#/components/schemas/AppResponseData_NoData"
1127 }
1128 }
1129 }
1130 }
1131 }
1132 }
1133 },
1134 "/admin/chat/rooms": {
1135 "get": {
1136 "tags": [
1137 "admin-chat"
1138 ],
1139 "description": "房间列表:关键字、Space、类型、可见性与启停状态筛选。",
1140 "operationId": "list_rooms",
1141 "parameters": [
1142 {
1143 "name": "q",
1144 "in": "query",
1145 "required": false,
1146 "schema": {
1147 "type": [
1148 "string",
1149 "null"
1150 ]
1151 }
1152 },
1153 {
1154 "name": "space_id",
1155 "in": "query",
1156 "required": false,
1157 "schema": {
1158 "type": [
1159 "string",
1160 "null"
1161 ],
1162 "format": "uuid"
1163 }
1164 },
1165 {
1166 "name": "kind",
1167 "in": "query",
1168 "required": false,
1169 "schema": {
1170 "type": [
1171 "string",
1172 "null"
1173 ]
1174 }
1175 },
1176 {
1177 "name": "status",
1178 "in": "query",
1179 "required": false,
1180 "schema": {
1181 "type": [
1182 "string",
1183 "null"
1184 ]
1185 }
1186 },
1187 {
1188 "name": "visibility",
1189 "in": "query",
1190 "required": false,
1191 "schema": {
1192 "type": [
1193 "string",
1194 "null"
1195 ]
1196 }
1197 },
1198 {
1199 "name": "limit",
1200 "in": "query",
1201 "required": false,
1202 "schema": {
1203 "type": [
1204 "integer",
1205 "null"
1206 ],
1207 "format": "int64",
1208 "minimum": 0
1209 }
1210 },
1211 {
1212 "name": "offset",
1213 "in": "query",
1214 "required": false,
1215 "schema": {
1216 "type": [
1217 "integer",
1218 "null"
1219 ],
1220 "format": "int64",
1221 "minimum": 0
1222 }
1223 }
1224 ],
1225 "responses": {
1226 "200": {
1227 "description": "room page",
1228 "content": {
1229 "application/json": {
1230 "schema": {
1231 "$ref": "#/components/schemas/AppResponseData_Page_AdminChatRoomSummary"
1232 }
1233 }
1234 }
1235 },
1236 "400": {
1237 "description": "request failed validation",
1238 "content": {
1239 "application/json": {
1240 "schema": {
1241 "$ref": "#/components/schemas/AppResponseData_NoData"
1242 }
1243 }
1244 }
1245 }
1246 }
1247 }
1248 },
1249 "/admin/chat/rooms/{id}": {
1250 "get": {
1251 "tags": [
1252 "admin-chat"
1253 ],
1254 "description": "房间详情:基础信息、成员/消息计数与删除/封禁/邀请统计。",
1255 "operationId": "get_room",
1256 "parameters": [
1257 {
1258 "name": "id",
1259 "in": "path",
1260 "description": "room id",
1261 "required": true,
1262 "schema": {
1263 "type": "string",
1264 "format": "uuid"
1265 }
1266 }
1267 ],
1268 "responses": {
1269 "200": {
1270 "description": "room detail",
1271 "content": {
1272 "application/json": {
1273 "schema": {
1274 "$ref": "#/components/schemas/AppResponseData_AdminChatRoomDetail"
1275 }
1276 }
1277 }
1278 },
1279 "404": {
1280 "description": "resource not found",
1281 "content": {
1282 "application/json": {
1283 "schema": {
1284 "$ref": "#/components/schemas/AppResponseData_NoData"
1285 }
1286 }
1287 }
1288 }
1289 }
1290 },
1291 "delete": {
1292 "tags": [
1293 "admin-chat"
1294 ],
1295 "description": "删除房间及其消息/成员/线程/附件,动作不可恢复;仅超级管理员可操作。",
1296 "operationId": "delete_room",
1297 "parameters": [
1298 {
1299 "name": "id",
1300 "in": "path",
1301 "description": "room id",
1302 "required": true,
1303 "schema": {
1304 "type": "string",
1305 "format": "uuid"
1306 }
1307 }
1308 ],
1309 "responses": {
1310 "200": {
1311 "description": "room deleted",
1312 "content": {
1313 "application/json": {
1314 "schema": {
1315 "$ref": "#/components/schemas/AppResponseData_DeleteChatRoomResp"
1316 }
1317 }
1318 }
1319 },
1320 "409": {
1321 "description": "child rooms exist",
1322 "content": {
1323 "application/json": {
1324 "schema": {
1325 "$ref": "#/components/schemas/AppResponseData_NoData"
1326 }
1327 }
1328 }
1329 }
1330 }
1331 },
1332 "patch": {
1333 "tags": [
1334 "admin-chat"
1335 ],
1336 "description": "更新房间属性:名称、主题、私有、NSFW 与启停。",
1337 "operationId": "update_room",
1338 "parameters": [
1339 {
1340 "name": "id",
1341 "in": "path",
1342 "description": "room id",
1343 "required": true,
1344 "schema": {
1345 "type": "string",
1346 "format": "uuid"
1347 }
1348 }
1349 ],
1350 "requestBody": {
1351 "content": {
1352 "application/json": {
1353 "schema": {
1354 "$ref": "#/components/schemas/UpdateChatRoomCmd"
1355 }
1356 }
1357 },
1358 "required": true
1359 },
1360 "responses": {
1361 "200": {
1362 "description": "room updated",
1363 "content": {
1364 "application/json": {
1365 "schema": {
1366 "$ref": "#/components/schemas/AppResponseData_AdminChatRoomDetail"
1367 }
1368 }
1369 }
1370 },
1371 "409": {
1372 "description": "resource conflict",
1373 "content": {
1374 "application/json": {
1375 "schema": {
1376 "$ref": "#/components/schemas/AppResponseData_NoData"
1377 }
1378 }
1379 }
1380 }
1381 }
1382 }
1383 },
1384 "/admin/chat/rooms/{id}/members": {
1385 "get": {
1386 "tags": [
1387 "admin-chat"
1388 ],
1389 "description": "房间成员列表:可按在席/已离开筛选。",
1390 "operationId": "list_members",
1391 "parameters": [
1392 {
1393 "name": "id",
1394 "in": "path",
1395 "description": "room id",
1396 "required": true,
1397 "schema": {
1398 "type": "string",
1399 "format": "uuid"
1400 }
1401 },
1402 {
1403 "name": "status",
1404 "in": "query",
1405 "required": false,
1406 "schema": {
1407 "type": [
1408 "string",
1409 "null"
1410 ]
1411 }
1412 },
1413 {
1414 "name": "limit",
1415 "in": "query",
1416 "required": false,
1417 "schema": {
1418 "type": [
1419 "integer",
1420 "null"
1421 ],
1422 "format": "int64",
1423 "minimum": 0
1424 }
1425 },
1426 {
1427 "name": "offset",
1428 "in": "query",
1429 "required": false,
1430 "schema": {
1431 "type": [
1432 "integer",
1433 "null"
1434 ],
1435 "format": "int64",
1436 "minimum": 0
1437 }
1438 }
1439 ],
1440 "responses": {
1441 "200": {
1442 "description": "member page",
1443 "content": {
1444 "application/json": {
1445 "schema": {
1446 "$ref": "#/components/schemas/AppResponseData_Page_AdminChatRoomMemberDto"
1447 }
1448 }
1449 }
1450 },
1451 "404": {
1452 "description": "resource not found",
1453 "content": {
1454 "application/json": {
1455 "schema": {
1456 "$ref": "#/components/schemas/AppResponseData_NoData"
1457 }
1458 }
1459 }
1460 }
1461 }
1462 }
1463 },
1464 "/admin/chat/rooms/{id}/members/{uid}": {
1465 "delete": {
1466 "tags": [
1467 "admin-chat"
1468 ],
1469 "description": "将成员移出房间,动作即时生效并广播 member_left 事件。",
1470 "operationId": "remove_member",
1471 "parameters": [
1472 {
1473 "name": "id",
1474 "in": "path",
1475 "description": "room id",
1476 "required": true,
1477 "schema": {
1478 "type": "string",
1479 "format": "uuid"
1480 }
1481 },
1482 {
1483 "name": "uid",
1484 "in": "path",
1485 "description": "user id",
1486 "required": true,
1487 "schema": {
1488 "type": "string",
1489 "format": "uuid"
1490 }
1491 }
1492 ],
1493 "responses": {
1494 "200": {
1495 "description": "member removed",
1496 "content": {
1497 "application/json": {
1498 "schema": {
1499 "$ref": "#/components/schemas/AppResponseData_RemoveChatMemberResp"
1500 }
1501 }
1502 }
1503 },
1504 "404": {
1505 "description": "resource not found",
1506 "content": {
1507 "application/json": {
1508 "schema": {
1509 "$ref": "#/components/schemas/AppResponseData_NoData"
1510 }
1511 }
1512 }
1513 }
1514 }
1515 }
1516 },
1517 "/admin/chat/rooms/{id}/purge": {
1518 "post": {
1519 "tags": [
1520 "admin-chat"
1521 ],
1522 "description": "清空房间全部消息、线程与附件(保留房间本身);仅超级管理员可操作。",
1523 "operationId": "purge_room",
1524 "parameters": [
1525 {
1526 "name": "id",
1527 "in": "path",
1528 "description": "room id",
1529 "required": true,
1530 "schema": {
1531 "type": "string",
1532 "format": "uuid"
1533 }
1534 }
1535 ],
1536 "responses": {
1537 "200": {
1538 "description": "room messages purged",
1539 "content": {
1540 "application/json": {
1541 "schema": {
1542 "$ref": "#/components/schemas/AppResponseData_PurgeChatMessagesResp"
1543 }
1544 }
1545 }
1546 },
1547 "404": {
1548 "description": "resource not found",
1549 "content": {
1550 "application/json": {
1551 "schema": {
1552 "$ref": "#/components/schemas/AppResponseData_NoData"
1553 }
1554 }
1555 }
1556 }
1557 }
1558 }
1559 },
1560 "/admin/chat/stats": {
1561 "get": {
1562 "tags": [
1563 "admin-chat"
1564 ],
1565 "description": "聊天域统计:房间/消息/线程/附件/成员/封禁汇总与房间类型分布。",
1566 "operationId": "stats",
1567 "responses": {
1568 "200": {
1569 "description": "chat stats",
1570 "content": {
1571 "application/json": {
1572 "schema": {
1573 "$ref": "#/components/schemas/AppResponseData_AdminChatStatsDto"
1574 }
1575 }
1576 }
1577 },
1578 "401": {
1579 "description": "authentication required",
1580 "content": {
1581 "application/json": {
1582 "schema": {
1583 "$ref": "#/components/schemas/AppResponseData_NoData"
1584 }
1585 }
1586 }
1587 }
1588 }
1589 }
1590 },
1591 "/admin/dashboard": {
1592 "get": {
1593 "tags": [
1594 "admin-system"
1595 ],
1596 "description": "管理看板聚合:核心计数、14 天增长趋势、活跃会话、最近审计与失败、队列概览。",
1597 "operationId": "dashboard",
1598 "responses": {
1599 "200": {
1600 "description": "dashboard",
1601 "content": {
1602 "application/json": {
1603 "schema": {
1604 "$ref": "#/components/schemas/AppResponseData_DashboardDto"
1605 }
1606 }
1607 }
1608 },
1609 "401": {
1610 "description": "authentication required",
1611 "content": {
1612 "application/json": {
1613 "schema": {
1614 "$ref": "#/components/schemas/AppResponseData_NoData"
1615 }
1616 }
1617 }
1618 }
1619 }
1620 }
1621 },
1622 "/admin/environments/{id}": {
1623 "delete": {
1624 "tags": [
1625 "admin-runners"
1626 ],
1627 "description": "删除部署环境及其 secrets 与部署历史。",
1628 "operationId": "delete_environment",
1629 "parameters": [
1630 {
1631 "name": "id",
1632 "in": "path",
1633 "required": true,
1634 "schema": {
1635 "type": "string",
1636 "format": "uuid"
1637 }
1638 }
1639 ],
1640 "responses": {
1641 "200": {
1642 "description": "environment deleted",
1643 "content": {
1644 "application/json": {
1645 "schema": {
1646 "$ref": "#/components/schemas/AppResponseData_Vec_EnvironmentAdminDto"
1647 }
1648 }
1649 }
1650 }
1651 }
1652 }
1653 },
1654 "/admin/environments/{id}/secrets": {
1655 "put": {
1656 "tags": [
1657 "admin-runners"
1658 ],
1659 "description": "创建或更新环境级 secret。",
1660 "operationId": "upsert_environment_secret",
1661 "parameters": [
1662 {
1663 "name": "id",
1664 "in": "path",
1665 "required": true,
1666 "schema": {
1667 "type": "string",
1668 "format": "uuid"
1669 }
1670 }
1671 ],
1672 "requestBody": {
1673 "content": {
1674 "application/json": {
1675 "schema": {
1676 "$ref": "#/components/schemas/UpsertEnvironmentSecretCmd"
1677 }
1678 }
1679 },
1680 "required": true
1681 },
1682 "responses": {
1683 "200": {
1684 "description": "secret upserted",
1685 "content": {
1686 "application/json": {
1687 "schema": {
1688 "$ref": "#/components/schemas/AppResponseData_Vec_EnvironmentAdminDto"
1689 }
1690 }
1691 }
1692 }
1693 }
1694 }
1695 },
1696 "/admin/environments/{id}/secrets/{name}": {
1697 "delete": {
1698 "tags": [
1699 "admin-runners"
1700 ],
1701 "description": "删除环境级 secret。",
1702 "operationId": "delete_environment_secret",
1703 "parameters": [
1704 {
1705 "name": "id",
1706 "in": "path",
1707 "required": true,
1708 "schema": {
1709 "type": "string",
1710 "format": "uuid"
1711 }
1712 },
1713 {
1714 "name": "name",
1715 "in": "path",
1716 "required": true,
1717 "schema": {
1718 "type": "string"
1719 }
1720 }
1721 ],
1722 "responses": {
1723 "200": {
1724 "description": "secret deleted",
1725 "content": {
1726 "application/json": {
1727 "schema": {
1728 "$ref": "#/components/schemas/AppResponseData_Vec_EnvironmentAdminDto"
1729 }
1730 }
1731 }
1732 }
1733 }
1734 }
1735 },
1736 "/admin/logs/audit": {
1737 "get": {
1738 "tags": [
1739 "admin-logs"
1740 ],
1741 "description": "管理操作审计日志(登录事件与成功变更)。",
1742 "operationId": "list_audit_logs",
1743 "parameters": [
1744 {
1745 "name": "admin_id",
1746 "in": "query",
1747 "required": false,
1748 "schema": {
1749 "type": [
1750 "string",
1751 "null"
1752 ],
1753 "format": "uuid"
1754 }
1755 },
1756 {
1757 "name": "admin_username",
1758 "in": "query",
1759 "required": false,
1760 "schema": {
1761 "type": [
1762 "string",
1763 "null"
1764 ]
1765 }
1766 },
1767 {
1768 "name": "action",
1769 "in": "query",
1770 "required": false,
1771 "schema": {
1772 "type": [
1773 "string",
1774 "null"
1775 ]
1776 }
1777 },
1778 {
1779 "name": "target_type",
1780 "in": "query",
1781 "required": false,
1782 "schema": {
1783 "type": [
1784 "string",
1785 "null"
1786 ]
1787 }
1788 },
1789 {
1790 "name": "target_id",
1791 "in": "query",
1792 "required": false,
1793 "schema": {
1794 "type": [
1795 "string",
1796 "null"
1797 ]
1798 }
1799 },
1800 {
1801 "name": "q",
1802 "in": "query",
1803 "required": false,
1804 "schema": {
1805 "type": [
1806 "string",
1807 "null"
1808 ]
1809 }
1810 },
1811 {
1812 "name": "from",
1813 "in": "query",
1814 "required": false,
1815 "schema": {
1816 "type": [
1817 "string",
1818 "null"
1819 ],
1820 "format": "date-time"
1821 }
1822 },
1823 {
1824 "name": "to",
1825 "in": "query",
1826 "required": false,
1827 "schema": {
1828 "type": [
1829 "string",
1830 "null"
1831 ],
1832 "format": "date-time"
1833 }
1834 },
1835 {
1836 "name": "limit",
1837 "in": "query",
1838 "required": false,
1839 "schema": {
1840 "type": [
1841 "integer",
1842 "null"
1843 ],
1844 "format": "int64",
1845 "minimum": 0
1846 }
1847 },
1848 {
1849 "name": "offset",
1850 "in": "query",
1851 "required": false,
1852 "schema": {
1853 "type": [
1854 "integer",
1855 "null"
1856 ],
1857 "format": "int64",
1858 "minimum": 0
1859 }
1860 }
1861 ],
1862 "responses": {
1863 "200": {
1864 "description": "audit page",
1865 "content": {
1866 "application/json": {
1867 "schema": {
1868 "$ref": "#/components/schemas/AppResponseData_AuditLogPageDto"
1869 }
1870 }
1871 }
1872 },
1873 "401": {
1874 "description": "authentication required",
1875 "content": {
1876 "application/json": {
1877 "schema": {
1878 "$ref": "#/components/schemas/AppResponseData_NoData"
1879 }
1880 }
1881 }
1882 }
1883 }
1884 }
1885 },
1886 "/admin/logs/audit/export": {
1887 "get": {
1888 "tags": [
1889 "admin-logs"
1890 ],
1891 "description": "按筛选条件导出审计日志 CSV(最多 10000 行)。",
1892 "operationId": "export_audit_logs",
1893 "parameters": [
1894 {
1895 "name": "admin_id",
1896 "in": "query",
1897 "required": false,
1898 "schema": {
1899 "type": [
1900 "string",
1901 "null"
1902 ],
1903 "format": "uuid"
1904 }
1905 },
1906 {
1907 "name": "admin_username",
1908 "in": "query",
1909 "required": false,
1910 "schema": {
1911 "type": [
1912 "string",
1913 "null"
1914 ]
1915 }
1916 },
1917 {
1918 "name": "action",
1919 "in": "query",
1920 "required": false,
1921 "schema": {
1922 "type": [
1923 "string",
1924 "null"
1925 ]
1926 }
1927 },
1928 {
1929 "name": "target_type",
1930 "in": "query",
1931 "required": false,
1932 "schema": {
1933 "type": [
1934 "string",
1935 "null"
1936 ]
1937 }
1938 },
1939 {
1940 "name": "target_id",
1941 "in": "query",
1942 "required": false,
1943 "schema": {
1944 "type": [
1945 "string",
1946 "null"
1947 ]
1948 }
1949 },
1950 {
1951 "name": "q",
1952 "in": "query",
1953 "required": false,
1954 "schema": {
1955 "type": [
1956 "string",
1957 "null"
1958 ]
1959 }
1960 },
1961 {
1962 "name": "from",
1963 "in": "query",
1964 "required": false,
1965 "schema": {
1966 "type": [
1967 "string",
1968 "null"
1969 ],
1970 "format": "date-time"
1971 }
1972 },
1973 {
1974 "name": "to",
1975 "in": "query",
1976 "required": false,
1977 "schema": {
1978 "type": [
1979 "string",
1980 "null"
1981 ],
1982 "format": "date-time"
1983 }
1984 },
1985 {
1986 "name": "limit",
1987 "in": "query",
1988 "required": false,
1989 "schema": {
1990 "type": [
1991 "integer",
1992 "null"
1993 ],
1994 "format": "int64",
1995 "minimum": 0
1996 }
1997 },
1998 {
1999 "name": "offset",
2000 "in": "query",
2001 "required": false,
2002 "schema": {
2003 "type": [
2004 "integer",
2005 "null"
2006 ],
2007 "format": "int64",
2008 "minimum": 0
2009 }
2010 }
2011 ],
2012 "responses": {
2013 "200": {
2014 "description": "csv export"
2015 }
2016 }
2017 }
2018 },
2019 "/admin/logs/jobs": {
2020 "get": {
2021 "tags": [
2022 "admin-logs"
2023 ],
2024 "description": "作业错误日志:聚合 import/search/system_tasks/webhook/pipeline 的失败信息。",
2025 "operationId": "list_job_logs",
2026 "parameters": [
2027 {
2028 "name": "source",
2029 "in": "query",
2030 "required": false,
2031 "schema": {
2032 "type": [
2033 "string",
2034 "null"
2035 ]
2036 }
2037 },
2038 {
2039 "name": "from",
2040 "in": "query",
2041 "required": false,
2042 "schema": {
2043 "type": [
2044 "string",
2045 "null"
2046 ],
2047 "format": "date-time"
2048 }
2049 },
2050 {
2051 "name": "to",
2052 "in": "query",
2053 "required": false,
2054 "schema": {
2055 "type": [
2056 "string",
2057 "null"
2058 ],
2059 "format": "date-time"
2060 }
2061 },
2062 {
2063 "name": "limit",
2064 "in": "query",
2065 "required": false,
2066 "schema": {
2067 "type": [
2068 "integer",
2069 "null"
2070 ],
2071 "format": "int64",
2072 "minimum": 0
2073 }
2074 },
2075 {
2076 "name": "offset",
2077 "in": "query",
2078 "required": false,
2079 "schema": {
2080 "type": [
2081 "integer",
2082 "null"
2083 ],
2084 "format": "int64",
2085 "minimum": 0
2086 }
2087 }
2088 ],
2089 "responses": {
2090 "200": {
2091 "description": "job log page",
2092 "content": {
2093 "application/json": {
2094 "schema": {
2095 "$ref": "#/components/schemas/AppResponseData_JobLogPageDto"
2096 }
2097 }
2098 }
2099 },
2100 "401": {
2101 "description": "authentication required",
2102 "content": {
2103 "application/json": {
2104 "schema": {
2105 "$ref": "#/components/schemas/AppResponseData_NoData"
2106 }
2107 }
2108 }
2109 }
2110 }
2111 }
2112 },
2113 "/admin/me": {
2114 "get": {
2115 "tags": [
2116 "admin-auth"
2117 ],
2118 "description": "当前管理员资料。",
2119 "operationId": "me",
2120 "responses": {
2121 "200": {
2122 "description": "current admin",
2123 "content": {
2124 "application/json": {
2125 "schema": {
2126 "$ref": "#/components/schemas/AppResponseData_AdminDto"
2127 }
2128 }
2129 }
2130 },
2131 "401": {
2132 "description": "authentication required",
2133 "content": {
2134 "application/json": {
2135 "schema": {
2136 "$ref": "#/components/schemas/AppResponseData_NoData"
2137 }
2138 }
2139 }
2140 }
2141 }
2142 }
2143 },
2144 "/admin/me/password": {
2145 "patch": {
2146 "tags": [
2147 "admin-auth"
2148 ],
2149 "description": "修改当前管理员口令;口令版本变更会失效其他管理端会话。",
2150 "operationId": "change_password",
2151 "requestBody": {
2152 "content": {
2153 "application/json": {
2154 "schema": {
2155 "$ref": "#/components/schemas/ChangePasswordCmd"
2156 }
2157 }
2158 },
2159 "required": true
2160 },
2161 "responses": {
2162 "200": {
2163 "description": "password changed",
2164 "content": {
2165 "application/json": {
2166 "schema": {
2167 "$ref": "#/components/schemas/AppResponseData_NoData"
2168 }
2169 }
2170 }
2171 },
2172 "400": {
2173 "description": "request failed validation",
2174 "content": {
2175 "application/json": {
2176 "schema": {
2177 "$ref": "#/components/schemas/AppResponseData_NoData"
2178 }
2179 }
2180 }
2181 },
2182 "401": {
2183 "description": "authentication required",
2184 "content": {
2185 "application/json": {
2186 "schema": {
2187 "$ref": "#/components/schemas/AppResponseData_NoData"
2188 }
2189 }
2190 }
2191 }
2192 }
2193 }
2194 },
2195 "/admin/queues": {
2196 "get": {
2197 "tags": [
2198 "admin-queues"
2199 ],
2200 "description": "队列快照:Redis git 同步队列、邮件 pub/sub 与各数据库作业队列深度/状态。",
2201 "operationId": "list_queues",
2202 "responses": {
2203 "200": {
2204 "description": "queue snapshots",
2205 "content": {
2206 "application/json": {
2207 "schema": {
2208 "$ref": "#/components/schemas/AppResponseData_Vec_QueueSnapshotDto"
2209 }
2210 }
2211 }
2212 },
2213 "401": {
2214 "description": "authentication required",
2215 "content": {
2216 "application/json": {
2217 "schema": {
2218 "$ref": "#/components/schemas/AppResponseData_NoData"
2219 }
2220 }
2221 }
2222 }
2223 }
2224 }
2225 },
2226 "/admin/queues/{name}/failed": {
2227 "get": {
2228 "tags": [
2229 "admin-queues"
2230 ],
2231 "description": "队列失败明细:返回该队列来源的失败作业(数据库队列),可按任务模块重试。",
2232 "operationId": "failed_jobs",
2233 "parameters": [
2234 {
2235 "name": "name",
2236 "in": "path",
2237 "description": "queue name",
2238 "required": true,
2239 "schema": {
2240 "type": "string"
2241 }
2242 },
2243 {
2244 "name": "limit",
2245 "in": "query",
2246 "required": false,
2247 "schema": {
2248 "type": [
2249 "integer",
2250 "null"
2251 ],
2252 "format": "int64",
2253 "minimum": 0
2254 }
2255 },
2256 {
2257 "name": "offset",
2258 "in": "query",
2259 "required": false,
2260 "schema": {
2261 "type": [
2262 "integer",
2263 "null"
2264 ],
2265 "format": "int64",
2266 "minimum": 0
2267 }
2268 }
2269 ],
2270 "responses": {
2271 "200": {
2272 "description": "failed job page",
2273 "content": {
2274 "application/json": {
2275 "schema": {
2276 "$ref": "#/components/schemas/AppResponseData_JobLogPageDto"
2277 }
2278 }
2279 }
2280 },
2281 "400": {
2282 "description": "unsupported queue",
2283 "content": {
2284 "application/json": {
2285 "schema": {
2286 "$ref": "#/components/schemas/AppResponseData_NoData"
2287 }
2288 }
2289 }
2290 }
2291 }
2292 }
2293 },
2294 "/admin/queues/{name}/purge": {
2295 "post": {
2296 "tags": [
2297 "admin-queues"
2298 ],
2299 "description": "清空队列:git 同步队列直接删除 Redis list,数据库队列删除终态记录;仅超级管理员可操作。",
2300 "operationId": "purge",
2301 "parameters": [
2302 {
2303 "name": "name",
2304 "in": "path",
2305 "description": "queue name",
2306 "required": true,
2307 "schema": {
2308 "type": "string"
2309 }
2310 }
2311 ],
2312 "responses": {
2313 "200": {
2314 "description": "queue purged",
2315 "content": {
2316 "application/json": {
2317 "schema": {
2318 "$ref": "#/components/schemas/AppResponseData_QueueActionResp"
2319 }
2320 }
2321 }
2322 },
2323 "400": {
2324 "description": "unsupported queue",
2325 "content": {
2326 "application/json": {
2327 "schema": {
2328 "$ref": "#/components/schemas/AppResponseData_NoData"
2329 }
2330 }
2331 }
2332 }
2333 }
2334 }
2335 },
2336 "/admin/queues/{name}/requeue-failed": {
2337 "post": {
2338 "tags": [
2339 "admin-queues"
2340 ],
2341 "description": "重排失败作业(search_index/import/chat_webhook/pipeline/deletion/system_tasks/ai)。AI 队列会按持久化载荷重新投递,缺载荷的历史作业保持失败。",
2342 "operationId": "requeue_failed",
2343 "parameters": [
2344 {
2345 "name": "name",
2346 "in": "path",
2347 "description": "queue name",
2348 "required": true,
2349 "schema": {
2350 "type": "string"
2351 }
2352 }
2353 ],
2354 "responses": {
2355 "200": {
2356 "description": "failed items requeued",
2357 "content": {
2358 "application/json": {
2359 "schema": {
2360 "$ref": "#/components/schemas/AppResponseData_QueueActionResp"
2361 }
2362 }
2363 }
2364 },
2365 "400": {
2366 "description": "unsupported queue",
2367 "content": {
2368 "application/json": {
2369 "schema": {
2370 "$ref": "#/components/schemas/AppResponseData_NoData"
2371 }
2372 }
2373 }
2374 }
2375 }
2376 }
2377 },
2378 "/admin/repos": {
2379 "get": {
2380 "tags": [
2381 "admin-repos"
2382 ],
2383 "description": "分页列出仓库及其归属 Space。",
2384 "operationId": "list_repos",
2385 "parameters": [
2386 {
2387 "name": "q",
2388 "in": "query",
2389 "required": false,
2390 "schema": {
2391 "type": [
2392 "string",
2393 "null"
2394 ]
2395 }
2396 },
2397 {
2398 "name": "space_id",
2399 "in": "query",
2400 "required": false,
2401 "schema": {
2402 "type": [
2403 "string",
2404 "null"
2405 ],
2406 "format": "uuid"
2407 }
2408 },
2409 {
2410 "name": "archived",
2411 "in": "query",
2412 "required": false,
2413 "schema": {
2414 "type": [
2415 "boolean",
2416 "null"
2417 ]
2418 }
2419 },
2420 {
2421 "name": "private",
2422 "in": "query",
2423 "required": false,
2424 "schema": {
2425 "type": [
2426 "boolean",
2427 "null"
2428 ]
2429 }
2430 },
2431 {
2432 "name": "limit",
2433 "in": "query",
2434 "required": false,
2435 "schema": {
2436 "type": [
2437 "integer",
2438 "null"
2439 ],
2440 "format": "int64",
2441 "minimum": 0
2442 }
2443 },
2444 {
2445 "name": "offset",
2446 "in": "query",
2447 "required": false,
2448 "schema": {
2449 "type": [
2450 "integer",
2451 "null"
2452 ],
2453 "format": "int64",
2454 "minimum": 0
2455 }
2456 }
2457 ],
2458 "responses": {
2459 "200": {
2460 "description": "repo list",
2461 "content": {
2462 "application/json": {
2463 "schema": {
2464 "$ref": "#/components/schemas/AppResponseData_AdminRepoPage"
2465 }
2466 }
2467 }
2468 }
2469 }
2470 }
2471 },
2472 "/admin/repos/{id}": {
2473 "get": {
2474 "tags": [
2475 "admin-repos"
2476 ],
2477 "description": "读取仓库管理详情。",
2478 "operationId": "get_repo",
2479 "parameters": [
2480 {
2481 "name": "id",
2482 "in": "path",
2483 "required": true,
2484 "schema": {
2485 "type": "string",
2486 "format": "uuid"
2487 }
2488 }
2489 ],
2490 "responses": {
2491 "200": {
2492 "description": "repo detail",
2493 "content": {
2494 "application/json": {
2495 "schema": {
2496 "$ref": "#/components/schemas/AppResponseData_AdminRepoSummary"
2497 }
2498 }
2499 }
2500 }
2501 }
2502 },
2503 "patch": {
2504 "tags": [
2505 "admin-repos"
2506 ],
2507 "description": "更新仓库默认分支、可见性、归档、LFS 或配额。",
2508 "operationId": "update_repo",
2509 "parameters": [
2510 {
2511 "name": "id",
2512 "in": "path",
2513 "required": true,
2514 "schema": {
2515 "type": "string",
2516 "format": "uuid"
2517 }
2518 }
2519 ],
2520 "requestBody": {
2521 "content": {
2522 "application/json": {
2523 "schema": {
2524 "$ref": "#/components/schemas/UpdateRepoCmd"
2525 }
2526 }
2527 },
2528 "required": true
2529 },
2530 "responses": {
2531 "200": {
2532 "description": "repo updated",
2533 "content": {
2534 "application/json": {
2535 "schema": {
2536 "$ref": "#/components/schemas/AppResponseData_AdminRepoSummary"
2537 }
2538 }
2539 }
2540 }
2541 }
2542 }
2543 },
2544 "/admin/runner-tokens": {
2545 "get": {
2546 "tags": [
2547 "admin-runners"
2548 ],
2549 "description": "列出注册令牌(不含明文)。",
2550 "operationId": "list_runner_tokens",
2551 "responses": {
2552 "200": {
2553 "description": "token list",
2554 "content": {
2555 "application/json": {
2556 "schema": {
2557 "$ref": "#/components/schemas/AppResponseData_Vec_RunnerTokenDto"
2558 }
2559 }
2560 }
2561 }
2562 }
2563 },
2564 "post": {
2565 "tags": [
2566 "admin-runners"
2567 ],
2568 "description": "创建一次性 runner 注册令牌;明文只在本次响应中返回。",
2569 "operationId": "create_runner_token",
2570 "requestBody": {
2571 "content": {
2572 "application/json": {
2573 "schema": {
2574 "$ref": "#/components/schemas/CreateRunnerTokenCmd"
2575 }
2576 }
2577 },
2578 "required": true
2579 },
2580 "responses": {
2581 "200": {
2582 "description": "token created",
2583 "content": {
2584 "application/json": {
2585 "schema": {
2586 "$ref": "#/components/schemas/AppResponseData_CreatedRunnerTokenDto"
2587 }
2588 }
2589 }
2590 }
2591 }
2592 }
2593 },
2594 "/admin/runner-tokens/{id}/revoke": {
2595 "post": {
2596 "tags": [
2597 "admin-runners"
2598 ],
2599 "description": "吊销注册令牌或 runner 凭据。",
2600 "operationId": "revoke_runner_token",
2601 "parameters": [
2602 {
2603 "name": "id",
2604 "in": "path",
2605 "required": true,
2606 "schema": {
2607 "type": "string",
2608 "format": "uuid"
2609 }
2610 }
2611 ],
2612 "responses": {
2613 "200": {
2614 "description": "token revoked",
2615 "content": {
2616 "application/json": {
2617 "schema": {
2618 "$ref": "#/components/schemas/AppResponseData_Vec_RunnerTokenDto"
2619 }
2620 }
2621 }
2622 }
2623 }
2624 }
2625 },
2626 "/admin/runners": {
2627 "get": {
2628 "tags": [
2629 "admin-runners"
2630 ],
2631 "description": "列出已注册的 runner 及其活跃作业数。",
2632 "operationId": "list_runners",
2633 "parameters": [
2634 {
2635 "name": "limit",
2636 "in": "query",
2637 "required": false,
2638 "schema": {
2639 "type": [
2640 "integer",
2641 "null"
2642 ],
2643 "format": "int64",
2644 "minimum": 0
2645 }
2646 },
2647 {
2648 "name": "offset",
2649 "in": "query",
2650 "required": false,
2651 "schema": {
2652 "type": [
2653 "integer",
2654 "null"
2655 ],
2656 "format": "int64",
2657 "minimum": 0
2658 }
2659 }
2660 ],
2661 "responses": {
2662 "200": {
2663 "description": "runner list",
2664 "content": {
2665 "application/json": {
2666 "schema": {
2667 "$ref": "#/components/schemas/AppResponseData_RunnerPageDto"
2668 }
2669 }
2670 }
2671 }
2672 }
2673 }
2674 },
2675 "/admin/runners/{id}": {
2676 "delete": {
2677 "tags": [
2678 "admin-runners"
2679 ],
2680 "description": "删除 runner 及其凭据。",
2681 "operationId": "delete_runner",
2682 "parameters": [
2683 {
2684 "name": "id",
2685 "in": "path",
2686 "required": true,
2687 "schema": {
2688 "type": "string",
2689 "format": "uuid"
2690 }
2691 }
2692 ],
2693 "responses": {
2694 "200": {
2695 "description": "runner deleted",
2696 "content": {
2697 "application/json": {
2698 "schema": {
2699 "$ref": "#/components/schemas/AppResponseData_Vec_RunnerDto"
2700 }
2701 }
2702 }
2703 }
2704 }
2705 },
2706 "patch": {
2707 "tags": [
2708 "admin-runners"
2709 ],
2710 "description": "更新 runner 的标签、容量或启用状态。",
2711 "operationId": "update_runner",
2712 "parameters": [
2713 {
2714 "name": "id",
2715 "in": "path",
2716 "required": true,
2717 "schema": {
2718 "type": "string",
2719 "format": "uuid"
2720 }
2721 }
2722 ],
2723 "requestBody": {
2724 "content": {
2725 "application/json": {
2726 "schema": {
2727 "$ref": "#/components/schemas/UpdateRunnerCmd"
2728 }
2729 }
2730 },
2731 "required": true
2732 },
2733 "responses": {
2734 "200": {
2735 "description": "runner updated",
2736 "content": {
2737 "application/json": {
2738 "schema": {
2739 "$ref": "#/components/schemas/AppResponseData_RunnerDto"
2740 }
2741 }
2742 }
2743 }
2744 }
2745 }
2746 },
2747 "/admin/spaces": {
2748 "get": {
2749 "tags": [
2750 "admin-spaces"
2751 ],
2752 "description": "Space 列表:关键字、状态、Owner 与分页。",
2753 "operationId": "list_spaces",
2754 "parameters": [
2755 {
2756 "name": "q",
2757 "in": "query",
2758 "required": false,
2759 "schema": {
2760 "type": [
2761 "string",
2762 "null"
2763 ]
2764 }
2765 },
2766 {
2767 "name": "status",
2768 "in": "query",
2769 "required": false,
2770 "schema": {
2771 "type": [
2772 "string",
2773 "null"
2774 ]
2775 }
2776 },
2777 {
2778 "name": "owner_id",
2779 "in": "query",
2780 "required": false,
2781 "schema": {
2782 "type": [
2783 "string",
2784 "null"
2785 ],
2786 "format": "uuid"
2787 }
2788 },
2789 {
2790 "name": "limit",
2791 "in": "query",
2792 "required": false,
2793 "schema": {
2794 "type": [
2795 "integer",
2796 "null"
2797 ],
2798 "format": "int64",
2799 "minimum": 0
2800 }
2801 },
2802 {
2803 "name": "offset",
2804 "in": "query",
2805 "required": false,
2806 "schema": {
2807 "type": [
2808 "integer",
2809 "null"
2810 ],
2811 "format": "int64",
2812 "minimum": 0
2813 }
2814 }
2815 ],
2816 "responses": {
2817 "200": {
2818 "description": "space page",
2819 "content": {
2820 "application/json": {
2821 "schema": {
2822 "$ref": "#/components/schemas/AppResponseData_Page_AdminSpaceSummary"
2823 }
2824 }
2825 }
2826 },
2827 "401": {
2828 "description": "authentication required",
2829 "content": {
2830 "application/json": {
2831 "schema": {
2832 "$ref": "#/components/schemas/AppResponseData_NoData"
2833 }
2834 }
2835 }
2836 }
2837 }
2838 }
2839 },
2840 "/admin/spaces/{id}": {
2841 "get": {
2842 "tags": [
2843 "admin-spaces"
2844 ],
2845 "description": "Space 详情:Owner、成员数、仓库/房间/目录统计。",
2846 "operationId": "get_space",
2847 "parameters": [
2848 {
2849 "name": "id",
2850 "in": "path",
2851 "description": "space id",
2852 "required": true,
2853 "schema": {
2854 "type": "string",
2855 "format": "uuid"
2856 }
2857 }
2858 ],
2859 "responses": {
2860 "200": {
2861 "description": "space detail",
2862 "content": {
2863 "application/json": {
2864 "schema": {
2865 "$ref": "#/components/schemas/AppResponseData_AdminSpaceDetail"
2866 }
2867 }
2868 }
2869 },
2870 "404": {
2871 "description": "resource not found",
2872 "content": {
2873 "application/json": {
2874 "schema": {
2875 "$ref": "#/components/schemas/AppResponseData_NoData"
2876 }
2877 }
2878 }
2879 }
2880 }
2881 },
2882 "delete": {
2883 "tags": [
2884 "admin-spaces"
2885 ],
2886 "description": "停用 Space(软删除);仅超级管理员可操作。",
2887 "operationId": "delete_space",
2888 "parameters": [
2889 {
2890 "name": "id",
2891 "in": "path",
2892 "description": "space id",
2893 "required": true,
2894 "schema": {
2895 "type": "string",
2896 "format": "uuid"
2897 }
2898 }
2899 ],
2900 "responses": {
2901 "200": {
2902 "description": "space deleted",
2903 "content": {
2904 "application/json": {
2905 "schema": {
2906 "$ref": "#/components/schemas/AppResponseData_NoData"
2907 }
2908 }
2909 }
2910 },
2911 "404": {
2912 "description": "resource not found",
2913 "content": {
2914 "application/json": {
2915 "schema": {
2916 "$ref": "#/components/schemas/AppResponseData_NoData"
2917 }
2918 }
2919 }
2920 }
2921 }
2922 },
2923 "patch": {
2924 "tags": [
2925 "admin-spaces"
2926 ],
2927 "description": "更新 Space:名称、描述、私有与启用状态。",
2928 "operationId": "update_space",
2929 "parameters": [
2930 {
2931 "name": "id",
2932 "in": "path",
2933 "description": "space id",
2934 "required": true,
2935 "schema": {
2936 "type": "string",
2937 "format": "uuid"
2938 }
2939 }
2940 ],
2941 "requestBody": {
2942 "content": {
2943 "application/json": {
2944 "schema": {
2945 "$ref": "#/components/schemas/UpdateSpaceCmd"
2946 }
2947 }
2948 },
2949 "required": true
2950 },
2951 "responses": {
2952 "200": {
2953 "description": "space updated",
2954 "content": {
2955 "application/json": {
2956 "schema": {
2957 "$ref": "#/components/schemas/AppResponseData_AdminSpaceDetail"
2958 }
2959 }
2960 }
2961 },
2962 "404": {
2963 "description": "resource not found",
2964 "content": {
2965 "application/json": {
2966 "schema": {
2967 "$ref": "#/components/schemas/AppResponseData_NoData"
2968 }
2969 }
2970 }
2971 }
2972 }
2973 }
2974 },
2975 "/admin/spaces/{id}/environments": {
2976 "get": {
2977 "tags": [
2978 "admin-runners"
2979 ],
2980 "description": "列出某个空间的部署环境与已配置的 secret 名称。",
2981 "operationId": "list_environments",
2982 "parameters": [
2983 {
2984 "name": "id",
2985 "in": "path",
2986 "required": true,
2987 "schema": {
2988 "type": "string",
2989 "format": "uuid"
2990 }
2991 }
2992 ],
2993 "responses": {
2994 "200": {
2995 "description": "environment list",
2996 "content": {
2997 "application/json": {
2998 "schema": {
2999 "$ref": "#/components/schemas/AppResponseData_Vec_EnvironmentAdminDto"
3000 }
3001 }
3002 }
3003 }
3004 }
3005 },
3006 "put": {
3007 "tags": [
3008 "admin-runners"
3009 ],
3010 "description": "创建或更新空间下的部署环境。",
3011 "operationId": "upsert_environment",
3012 "parameters": [
3013 {
3014 "name": "id",
3015 "in": "path",
3016 "required": true,
3017 "schema": {
3018 "type": "string",
3019 "format": "uuid"
3020 }
3021 }
3022 ],
3023 "requestBody": {
3024 "content": {
3025 "application/json": {
3026 "schema": {
3027 "$ref": "#/components/schemas/UpsertEnvironmentAdminCmd"
3028 }
3029 }
3030 },
3031 "required": true
3032 },
3033 "responses": {
3034 "200": {
3035 "description": "environment upserted",
3036 "content": {
3037 "application/json": {
3038 "schema": {
3039 "$ref": "#/components/schemas/AppResponseData_EnvironmentAdminDto"
3040 }
3041 }
3042 }
3043 }
3044 }
3045 }
3046 },
3047 "/admin/spaces/{id}/members": {
3048 "get": {
3049 "tags": [
3050 "admin-spaces"
3051 ],
3052 "description": "Space 成员列表。",
3053 "operationId": "list_space_members",
3054 "parameters": [
3055 {
3056 "name": "id",
3057 "in": "path",
3058 "description": "space id",
3059 "required": true,
3060 "schema": {
3061 "type": "string",
3062 "format": "uuid"
3063 }
3064 },
3065 {
3066 "name": "status",
3067 "in": "query",
3068 "required": false,
3069 "schema": {
3070 "type": [
3071 "string",
3072 "null"
3073 ]
3074 }
3075 },
3076 {
3077 "name": "limit",
3078 "in": "query",
3079 "required": false,
3080 "schema": {
3081 "type": [
3082 "integer",
3083 "null"
3084 ],
3085 "format": "int64",
3086 "minimum": 0
3087 }
3088 },
3089 {
3090 "name": "offset",
3091 "in": "query",
3092 "required": false,
3093 "schema": {
3094 "type": [
3095 "integer",
3096 "null"
3097 ],
3098 "format": "int64",
3099 "minimum": 0
3100 }
3101 }
3102 ],
3103 "responses": {
3104 "200": {
3105 "description": "member page",
3106 "content": {
3107 "application/json": {
3108 "schema": {
3109 "$ref": "#/components/schemas/AppResponseData_Page_AdminSpaceMemberDto"
3110 }
3111 }
3112 }
3113 },
3114 "404": {
3115 "description": "resource not found",
3116 "content": {
3117 "application/json": {
3118 "schema": {
3119 "$ref": "#/components/schemas/AppResponseData_NoData"
3120 }
3121 }
3122 }
3123 }
3124 }
3125 },
3126 "post": {
3127 "tags": [
3128 "admin-spaces"
3129 ],
3130 "description": "管理员将用户加入 Space:已存在记录则重新激活,并同步成员计数。",
3131 "operationId": "add_space_member",
3132 "parameters": [
3133 {
3134 "name": "id",
3135 "in": "path",
3136 "description": "space id",
3137 "required": true,
3138 "schema": {
3139 "type": "string",
3140 "format": "uuid"
3141 }
3142 }
3143 ],
3144 "requestBody": {
3145 "content": {
3146 "application/json": {
3147 "schema": {
3148 "$ref": "#/components/schemas/AddSpaceMemberCmd"
3149 }
3150 }
3151 },
3152 "required": true
3153 },
3154 "responses": {
3155 "200": {
3156 "description": "member added",
3157 "content": {
3158 "application/json": {
3159 "schema": {
3160 "$ref": "#/components/schemas/AppResponseData_AddSpaceMemberResp"
3161 }
3162 }
3163 }
3164 },
3165 "400": {
3166 "description": "request failed validation",
3167 "content": {
3168 "application/json": {
3169 "schema": {
3170 "$ref": "#/components/schemas/AppResponseData_NoData"
3171 }
3172 }
3173 }
3174 },
3175 "404": {
3176 "description": "resource not found",
3177 "content": {
3178 "application/json": {
3179 "schema": {
3180 "$ref": "#/components/schemas/AppResponseData_NoData"
3181 }
3182 }
3183 }
3184 }
3185 }
3186 }
3187 },
3188 "/admin/spaces/{id}/members/{uid}": {
3189 "delete": {
3190 "tags": [
3191 "admin-spaces"
3192 ],
3193 "description": "将成员移出 Space。",
3194 "operationId": "remove_space_member",
3195 "parameters": [
3196 {
3197 "name": "id",
3198 "in": "path",
3199 "description": "space id",
3200 "required": true,
3201 "schema": {
3202 "type": "string",
3203 "format": "uuid"
3204 }
3205 },
3206 {
3207 "name": "uid",
3208 "in": "path",
3209 "description": "user id",
3210 "required": true,
3211 "schema": {
3212 "type": "string",
3213 "format": "uuid"
3214 }
3215 }
3216 ],
3217 "responses": {
3218 "200": {
3219 "description": "member removed",
3220 "content": {
3221 "application/json": {
3222 "schema": {
3223 "$ref": "#/components/schemas/AppResponseData_RemoveMemberResp"
3224 }
3225 }
3226 }
3227 },
3228 "404": {
3229 "description": "resource not found",
3230 "content": {
3231 "application/json": {
3232 "schema": {
3233 "$ref": "#/components/schemas/AppResponseData_NoData"
3234 }
3235 }
3236 }
3237 }
3238 }
3239 }
3240 },
3241 "/admin/spaces/{id}/transfer": {
3242 "post": {
3243 "tags": [
3244 "admin-spaces"
3245 ],
3246 "description": "转移 Space 所有权;仅超级管理员可操作。",
3247 "operationId": "transfer_space",
3248 "parameters": [
3249 {
3250 "name": "id",
3251 "in": "path",
3252 "description": "space id",
3253 "required": true,
3254 "schema": {
3255 "type": "string",
3256 "format": "uuid"
3257 }
3258 }
3259 ],
3260 "requestBody": {
3261 "content": {
3262 "application/json": {
3263 "schema": {
3264 "$ref": "#/components/schemas/TransferSpaceCmd"
3265 }
3266 }
3267 },
3268 "required": true
3269 },
3270 "responses": {
3271 "200": {
3272 "description": "space transferred",
3273 "content": {
3274 "application/json": {
3275 "schema": {
3276 "$ref": "#/components/schemas/AppResponseData_AdminSpaceDetail"
3277 }
3278 }
3279 }
3280 },
3281 "400": {
3282 "description": "request failed validation",
3283 "content": {
3284 "application/json": {
3285 "schema": {
3286 "$ref": "#/components/schemas/AppResponseData_NoData"
3287 }
3288 }
3289 }
3290 },
3291 "409": {
3292 "description": "resource conflict",
3293 "content": {
3294 "application/json": {
3295 "schema": {
3296 "$ref": "#/components/schemas/AppResponseData_NoData"
3297 }
3298 }
3299 }
3300 }
3301 }
3302 }
3303 },
3304 "/admin/storage/download-url": {
3305 "get": {
3306 "tags": [
3307 "admin-storage"
3308 ],
3309 "description": "生成对象预签名下载地址(最长 1 小时)。",
3310 "operationId": "download_url",
3311 "parameters": [
3312 {
3313 "name": "key",
3314 "in": "query",
3315 "required": true,
3316 "schema": {
3317 "type": "string"
3318 }
3319 }
3320 ],
3321 "responses": {
3322 "200": {
3323 "description": "presigned download url",
3324 "content": {
3325 "application/json": {
3326 "schema": {
3327 "$ref": "#/components/schemas/AppResponseData_DownloadUrlDto"
3328 }
3329 }
3330 }
3331 },
3332 "404": {
3333 "description": "resource not found",
3334 "content": {
3335 "application/json": {
3336 "schema": {
3337 "$ref": "#/components/schemas/AppResponseData_NoData"
3338 }
3339 }
3340 }
3341 }
3342 }
3343 }
3344 },
3345 "/admin/storage/objects": {
3346 "get": {
3347 "tags": [
3348 "admin-storage"
3349 ],
3350 "description": "对象浏览:前缀过滤与 token 分页。",
3351 "operationId": "list_objects",
3352 "parameters": [
3353 {
3354 "name": "prefix",
3355 "in": "query",
3356 "required": false,
3357 "schema": {
3358 "type": [
3359 "string",
3360 "null"
3361 ]
3362 }
3363 },
3364 {
3365 "name": "token",
3366 "in": "query",
3367 "required": false,
3368 "schema": {
3369 "type": [
3370 "string",
3371 "null"
3372 ]
3373 }
3374 },
3375 {
3376 "name": "limit",
3377 "in": "query",
3378 "required": false,
3379 "schema": {
3380 "type": [
3381 "integer",
3382 "null"
3383 ],
3384 "minimum": 0
3385 }
3386 }
3387 ],
3388 "responses": {
3389 "200": {
3390 "description": "object page",
3391 "content": {
3392 "application/json": {
3393 "schema": {
3394 "$ref": "#/components/schemas/AppResponseData_StorageObjectPageDto"
3395 }
3396 }
3397 }
3398 },
3399 "401": {
3400 "description": "authentication required",
3401 "content": {
3402 "application/json": {
3403 "schema": {
3404 "$ref": "#/components/schemas/AppResponseData_NoData"
3405 }
3406 }
3407 }
3408 }
3409 }
3410 },
3411 "delete": {
3412 "tags": [
3413 "admin-storage"
3414 ],
3415 "description": "删除存储对象;仅超级管理员可操作。",
3416 "operationId": "delete_object",
3417 "parameters": [
3418 {
3419 "name": "key",
3420 "in": "query",
3421 "required": true,
3422 "schema": {
3423 "type": "string"
3424 }
3425 }
3426 ],
3427 "responses": {
3428 "200": {
3429 "description": "object deleted",
3430 "content": {
3431 "application/json": {
3432 "schema": {
3433 "$ref": "#/components/schemas/AppResponseData_DeleteObjectResp"
3434 }
3435 }
3436 }
3437 },
3438 "404": {
3439 "description": "resource not found",
3440 "content": {
3441 "application/json": {
3442 "schema": {
3443 "$ref": "#/components/schemas/AppResponseData_NoData"
3444 }
3445 }
3446 }
3447 }
3448 }
3449 }
3450 },
3451 "/admin/storage/overview": {
3452 "get": {
3453 "tags": [
3454 "admin-storage"
3455 ],
3456 "description": "存储总览:单桶按前缀聚合的用量与对象数(60s 缓存,refresh=true 强制重算)。",
3457 "operationId": "overview",
3458 "parameters": [
3459 {
3460 "name": "refresh",
3461 "in": "query",
3462 "required": false,
3463 "schema": {
3464 "type": [
3465 "boolean",
3466 "null"
3467 ]
3468 }
3469 }
3470 ],
3471 "responses": {
3472 "200": {
3473 "description": "storage overview",
3474 "content": {
3475 "application/json": {
3476 "schema": {
3477 "$ref": "#/components/schemas/AppResponseData_StorageOverviewDto"
3478 }
3479 }
3480 }
3481 },
3482 "401": {
3483 "description": "authentication required",
3484 "content": {
3485 "application/json": {
3486 "schema": {
3487 "$ref": "#/components/schemas/AppResponseData_NoData"
3488 }
3489 }
3490 }
3491 }
3492 }
3493 }
3494 },
3495 "/admin/system/config": {
3496 "get": {
3497 "tags": [
3498 "admin-system"
3499 ],
3500 "description": "生效配置快照(脱敏):进程监听、功能开关、检索/导入/Git 限制、存储与数据库/Redis/会话/邮件端点,不含任何密钥。",
3501 "operationId": "config",
3502 "responses": {
3503 "200": {
3504 "description": "system config",
3505 "content": {
3506 "application/json": {
3507 "schema": {
3508 "$ref": "#/components/schemas/AppResponseData_SystemConfigDto"
3509 }
3510 }
3511 }
3512 },
3513 "401": {
3514 "description": "authentication required",
3515 "content": {
3516 "application/json": {
3517 "schema": {
3518 "$ref": "#/components/schemas/AppResponseData_NoData"
3519 }
3520 }
3521 }
3522 }
3523 }
3524 }
3525 },
3526 "/admin/system/status": {
3527 "get": {
3528 "tags": [
3529 "admin-system"
3530 ],
3531 "description": "系统状态:进程信息、DB/Redis/S3/搜索健康、核心计数、队列汇总与最近失败。",
3532 "operationId": "status",
3533 "responses": {
3534 "200": {
3535 "description": "system status",
3536 "content": {
3537 "application/json": {
3538 "schema": {
3539 "$ref": "#/components/schemas/AppResponseData_SystemStatusDto"
3540 }
3541 }
3542 }
3543 },
3544 "401": {
3545 "description": "authentication required",
3546 "content": {
3547 "application/json": {
3548 "schema": {
3549 "$ref": "#/components/schemas/AppResponseData_NoData"
3550 }
3551 }
3552 }
3553 }
3554 }
3555 }
3556 },
3557 "/admin/tasks": {
3558 "get": {
3559 "tags": [
3560 "admin-tasks"
3561 ],
3562 "description": "统一任务视图:import/search_index/chat_webhook/pipeline/deletion/system_tasks。",
3563 "operationId": "list_tasks",
3564 "parameters": [
3565 {
3566 "name": "source",
3567 "in": "query",
3568 "required": false,
3569 "schema": {
3570 "type": [
3571 "string",
3572 "null"
3573 ]
3574 }
3575 },
3576 {
3577 "name": "state",
3578 "in": "query",
3579 "required": false,
3580 "schema": {
3581 "type": [
3582 "string",
3583 "null"
3584 ]
3585 }
3586 },
3587 {
3588 "name": "q",
3589 "in": "query",
3590 "required": false,
3591 "schema": {
3592 "type": [
3593 "string",
3594 "null"
3595 ]
3596 }
3597 },
3598 {
3599 "name": "from",
3600 "in": "query",
3601 "required": false,
3602 "schema": {
3603 "type": [
3604 "string",
3605 "null"
3606 ],
3607 "format": "date-time"
3608 }
3609 },
3610 {
3611 "name": "to",
3612 "in": "query",
3613 "required": false,
3614 "schema": {
3615 "type": [
3616 "string",
3617 "null"
3618 ],
3619 "format": "date-time"
3620 }
3621 },
3622 {
3623 "name": "limit",
3624 "in": "query",
3625 "required": false,
3626 "schema": {
3627 "type": [
3628 "integer",
3629 "null"
3630 ],
3631 "format": "int64",
3632 "minimum": 0
3633 }
3634 },
3635 {
3636 "name": "offset",
3637 "in": "query",
3638 "required": false,
3639 "schema": {
3640 "type": [
3641 "integer",
3642 "null"
3643 ],
3644 "format": "int64",
3645 "minimum": 0
3646 }
3647 }
3648 ],
3649 "responses": {
3650 "200": {
3651 "description": "task page",
3652 "content": {
3653 "application/json": {
3654 "schema": {
3655 "$ref": "#/components/schemas/AppResponseData_TaskPageDto"
3656 }
3657 }
3658 }
3659 },
3660 "400": {
3661 "description": "request failed validation",
3662 "content": {
3663 "application/json": {
3664 "schema": {
3665 "$ref": "#/components/schemas/AppResponseData_NoData"
3666 }
3667 }
3668 }
3669 }
3670 }
3671 }
3672 },
3673 "/admin/tasks/stats": {
3674 "get": {
3675 "tags": [
3676 "admin-tasks"
3677 ],
3678 "description": "任务统计:各来源的排队/执行中/成功/失败计数,用于任务总览与看板。",
3679 "operationId": "task_stats",
3680 "responses": {
3681 "200": {
3682 "description": "task stats",
3683 "content": {
3684 "application/json": {
3685 "schema": {
3686 "$ref": "#/components/schemas/AppResponseData_TaskStatsDto"
3687 }
3688 }
3689 }
3690 }
3691 }
3692 }
3693 },
3694 "/admin/tasks/{source}/bulk": {
3695 "post": {
3696 "tags": [
3697 "admin-tasks"
3698 ],
3699 "description": "批量重试或取消同一来源的任务,单次最多 100 个;逐条返回结果。",
3700 "operationId": "bulk_tasks",
3701 "parameters": [
3702 {
3703 "name": "source",
3704 "in": "path",
3705 "description": "task source",
3706 "required": true,
3707 "schema": {
3708 "type": "string"
3709 }
3710 }
3711 ],
3712 "requestBody": {
3713 "content": {
3714 "application/json": {
3715 "schema": {
3716 "$ref": "#/components/schemas/BulkTaskCmd"
3717 }
3718 }
3719 },
3720 "required": true
3721 },
3722 "responses": {
3723 "200": {
3724 "description": "bulk result",
3725 "content": {
3726 "application/json": {
3727 "schema": {
3728 "$ref": "#/components/schemas/AppResponseData_BulkTaskResp"
3729 }
3730 }
3731 }
3732 },
3733 "400": {
3734 "description": "request failed validation",
3735 "content": {
3736 "application/json": {
3737 "schema": {
3738 "$ref": "#/components/schemas/AppResponseData_NoData"
3739 }
3740 }
3741 }
3742 }
3743 }
3744 }
3745 },
3746 "/admin/tasks/{source}/{id}": {
3747 "get": {
3748 "tags": [
3749 "admin-tasks"
3750 ],
3751 "description": "任务详情;import token 与 webhook payload 已脱敏。",
3752 "operationId": "get_task",
3753 "parameters": [
3754 {
3755 "name": "source",
3756 "in": "path",
3757 "description": "task source",
3758 "required": true,
3759 "schema": {
3760 "type": "string"
3761 }
3762 },
3763 {
3764 "name": "id",
3765 "in": "path",
3766 "description": "task id",
3767 "required": true,
3768 "schema": {
3769 "type": "string",
3770 "format": "uuid"
3771 }
3772 }
3773 ],
3774 "responses": {
3775 "200": {
3776 "description": "task detail",
3777 "content": {
3778 "application/json": {
3779 "schema": {
3780 "$ref": "#/components/schemas/AppResponseData_TaskDetailDto"
3781 }
3782 }
3783 }
3784 },
3785 "404": {
3786 "description": "resource not found",
3787 "content": {
3788 "application/json": {
3789 "schema": {
3790 "$ref": "#/components/schemas/AppResponseData_NoData"
3791 }
3792 }
3793 }
3794 }
3795 }
3796 },
3797 "delete": {
3798 "tags": [
3799 "admin-tasks"
3800 ],
3801 "description": "删除终态任务记录;仅超级管理员可操作。",
3802 "operationId": "delete_task",
3803 "parameters": [
3804 {
3805 "name": "source",
3806 "in": "path",
3807 "description": "task source",
3808 "required": true,
3809 "schema": {
3810 "type": "string"
3811 }
3812 },
3813 {
3814 "name": "id",
3815 "in": "path",
3816 "description": "task id",
3817 "required": true,
3818 "schema": {
3819 "type": "string",
3820 "format": "uuid"
3821 }
3822 }
3823 ],
3824 "responses": {
3825 "200": {
3826 "description": "task deleted",
3827 "content": {
3828 "application/json": {
3829 "schema": {
3830 "$ref": "#/components/schemas/AppResponseData_NoData"
3831 }
3832 }
3833 }
3834 },
3835 "409": {
3836 "description": "resource conflict",
3837 "content": {
3838 "application/json": {
3839 "schema": {
3840 "$ref": "#/components/schemas/AppResponseData_NoData"
3841 }
3842 }
3843 }
3844 }
3845 }
3846 }
3847 },
3848 "/admin/tasks/{source}/{id}/cancel": {
3849 "post": {
3850 "tags": [
3851 "admin-tasks"
3852 ],
3853 "description": "取消任务:队列中/进行中的作业按来源置取消态。",
3854 "operationId": "cancel_task",
3855 "parameters": [
3856 {
3857 "name": "source",
3858 "in": "path",
3859 "description": "task source",
3860 "required": true,
3861 "schema": {
3862 "type": "string"
3863 }
3864 },
3865 {
3866 "name": "id",
3867 "in": "path",
3868 "description": "task id",
3869 "required": true,
3870 "schema": {
3871 "type": "string",
3872 "format": "uuid"
3873 }
3874 }
3875 ],
3876 "responses": {
3877 "200": {
3878 "description": "task cancelled",
3879 "content": {
3880 "application/json": {
3881 "schema": {
3882 "$ref": "#/components/schemas/AppResponseData_TaskActionResp"
3883 }
3884 }
3885 }
3886 },
3887 "409": {
3888 "description": "resource conflict",
3889 "content": {
3890 "application/json": {
3891 "schema": {
3892 "$ref": "#/components/schemas/AppResponseData_NoData"
3893 }
3894 }
3895 }
3896 }
3897 }
3898 }
3899 },
3900 "/admin/tasks/{source}/{id}/retry": {
3901 "post": {
3902 "tags": [
3903 "admin-tasks"
3904 ],
3905 "description": "重试任务:仅失败/取消态可重试。",
3906 "operationId": "retry_task",
3907 "parameters": [
3908 {
3909 "name": "source",
3910 "in": "path",
3911 "description": "task source",
3912 "required": true,
3913 "schema": {
3914 "type": "string"
3915 }
3916 },
3917 {
3918 "name": "id",
3919 "in": "path",
3920 "description": "task id",
3921 "required": true,
3922 "schema": {
3923 "type": "string",
3924 "format": "uuid"
3925 }
3926 }
3927 ],
3928 "responses": {
3929 "200": {
3930 "description": "task retried",
3931 "content": {
3932 "application/json": {
3933 "schema": {
3934 "$ref": "#/components/schemas/AppResponseData_TaskActionResp"
3935 }
3936 }
3937 }
3938 },
3939 "409": {
3940 "description": "resource conflict",
3941 "content": {
3942 "application/json": {
3943 "schema": {
3944 "$ref": "#/components/schemas/AppResponseData_NoData"
3945 }
3946 }
3947 }
3948 }
3949 }
3950 }
3951 },
3952 "/admin/users": {
3953 "get": {
3954 "tags": [
3955 "admin-users"
3956 ],
3957 "description": "用户列表:关键字(用户名/显示名/邮箱)、状态筛选与分页。",
3958 "operationId": "list_users",
3959 "parameters": [
3960 {
3961 "name": "q",
3962 "in": "query",
3963 "required": false,
3964 "schema": {
3965 "type": [
3966 "string",
3967 "null"
3968 ]
3969 }
3970 },
3971 {
3972 "name": "status",
3973 "in": "query",
3974 "required": false,
3975 "schema": {
3976 "type": [
3977 "string",
3978 "null"
3979 ]
3980 }
3981 },
3982 {
3983 "name": "limit",
3984 "in": "query",
3985 "required": false,
3986 "schema": {
3987 "type": [
3988 "integer",
3989 "null"
3990 ],
3991 "format": "int64",
3992 "minimum": 0
3993 }
3994 },
3995 {
3996 "name": "offset",
3997 "in": "query",
3998 "required": false,
3999 "schema": {
4000 "type": [
4001 "integer",
4002 "null"
4003 ],
4004 "format": "int64",
4005 "minimum": 0
4006 }
4007 },
4008 {
4009 "name": "sort",
4010 "in": "query",
4011 "required": false,
4012 "schema": {
4013 "type": [
4014 "string",
4015 "null"
4016 ]
4017 }
4018 }
4019 ],
4020 "responses": {
4021 "200": {
4022 "description": "user page",
4023 "content": {
4024 "application/json": {
4025 "schema": {
4026 "$ref": "#/components/schemas/AppResponseData_Page_AdminUserSummary"
4027 }
4028 }
4029 }
4030 },
4031 "401": {
4032 "description": "authentication required",
4033 "content": {
4034 "application/json": {
4035 "schema": {
4036 "$ref": "#/components/schemas/AppResponseData_NoData"
4037 }
4038 }
4039 }
4040 }
4041 }
4042 },
4043 "post": {
4044 "tags": [
4045 "admin-users"
4046 ],
4047 "description": "创建用户(管理员代办):直接写入账号、资料与已激活邮箱;仅超级管理员可操作。",
4048 "operationId": "create_user",
4049 "requestBody": {
4050 "content": {
4051 "application/json": {
4052 "schema": {
4053 "$ref": "#/components/schemas/CreateUserCmd"
4054 }
4055 }
4056 },
4057 "required": true
4058 },
4059 "responses": {
4060 "200": {
4061 "description": "user created",
4062 "content": {
4063 "application/json": {
4064 "schema": {
4065 "$ref": "#/components/schemas/AppResponseData_CreateUserResp"
4066 }
4067 }
4068 }
4069 },
4070 "400": {
4071 "description": "request failed validation",
4072 "content": {
4073 "application/json": {
4074 "schema": {
4075 "$ref": "#/components/schemas/AppResponseData_NoData"
4076 }
4077 }
4078 }
4079 },
4080 "403": {
4081 "description": "operation not allowed",
4082 "content": {
4083 "application/json": {
4084 "schema": {
4085 "$ref": "#/components/schemas/AppResponseData_NoData"
4086 }
4087 }
4088 }
4089 },
4090 "409": {
4091 "description": "resource conflict",
4092 "content": {
4093 "application/json": {
4094 "schema": {
4095 "$ref": "#/components/schemas/AppResponseData_NoData"
4096 }
4097 }
4098 }
4099 }
4100 }
4101 }
4102 },
4103 "/admin/users/bulk": {
4104 "post": {
4105 "tags": [
4106 "admin-users"
4107 ],
4108 "description": "批量用户操作:activate/deactivate/restrict/unrestrict/revoke_sessions/suspend/delete,单次最多 100 个目标。",
4109 "operationId": "bulk_users",
4110 "requestBody": {
4111 "content": {
4112 "application/json": {
4113 "schema": {
4114 "$ref": "#/components/schemas/BulkUsersCmd"
4115 }
4116 }
4117 },
4118 "required": true
4119 },
4120 "responses": {
4121 "200": {
4122 "description": "bulk result",
4123 "content": {
4124 "application/json": {
4125 "schema": {
4126 "$ref": "#/components/schemas/AppResponseData_BulkUsersResp"
4127 }
4128 }
4129 }
4130 },
4131 "400": {
4132 "description": "request failed validation",
4133 "content": {
4134 "application/json": {
4135 "schema": {
4136 "$ref": "#/components/schemas/AppResponseData_NoData"
4137 }
4138 }
4139 }
4140 },
4141 "403": {
4142 "description": "operation not allowed",
4143 "content": {
4144 "application/json": {
4145 "schema": {
4146 "$ref": "#/components/schemas/AppResponseData_NoData"
4147 }
4148 }
4149 }
4150 }
4151 }
4152 }
4153 },
4154 "/admin/users/export": {
4155 "get": {
4156 "tags": [
4157 "admin-users"
4158 ],
4159 "description": "按当前筛选条件导出用户 CSV(最多 5000 行)。",
4160 "operationId": "export_users",
4161 "parameters": [
4162 {
4163 "name": "q",
4164 "in": "query",
4165 "required": false,
4166 "schema": {
4167 "type": [
4168 "string",
4169 "null"
4170 ]
4171 }
4172 },
4173 {
4174 "name": "status",
4175 "in": "query",
4176 "required": false,
4177 "schema": {
4178 "type": [
4179 "string",
4180 "null"
4181 ]
4182 }
4183 },
4184 {
4185 "name": "limit",
4186 "in": "query",
4187 "required": false,
4188 "schema": {
4189 "type": [
4190 "integer",
4191 "null"
4192 ],
4193 "format": "int64",
4194 "minimum": 0
4195 }
4196 },
4197 {
4198 "name": "offset",
4199 "in": "query",
4200 "required": false,
4201 "schema": {
4202 "type": [
4203 "integer",
4204 "null"
4205 ],
4206 "format": "int64",
4207 "minimum": 0
4208 }
4209 },
4210 {
4211 "name": "sort",
4212 "in": "query",
4213 "required": false,
4214 "schema": {
4215 "type": [
4216 "string",
4217 "null"
4218 ]
4219 }
4220 }
4221 ],
4222 "responses": {
4223 "200": {
4224 "description": "csv export"
4225 }
4226 }
4227 }
4228 },
4229 "/admin/users/{uid}": {
4230 "get": {
4231 "tags": [
4232 "admin-users"
4233 ],
4234 "description": "用户详情:账号状态、邮箱、会话、所属 Space 与封禁记录。",
4235 "operationId": "get_user",
4236 "parameters": [
4237 {
4238 "name": "uid",
4239 "in": "path",
4240 "description": "user id",
4241 "required": true,
4242 "schema": {
4243 "type": "string",
4244 "format": "uuid"
4245 }
4246 }
4247 ],
4248 "responses": {
4249 "200": {
4250 "description": "user detail",
4251 "content": {
4252 "application/json": {
4253 "schema": {
4254 "$ref": "#/components/schemas/AppResponseData_AdminUserDetail"
4255 }
4256 }
4257 }
4258 },
4259 "404": {
4260 "description": "resource not found",
4261 "content": {
4262 "application/json": {
4263 "schema": {
4264 "$ref": "#/components/schemas/AppResponseData_NoData"
4265 }
4266 }
4267 }
4268 }
4269 }
4270 },
4271 "delete": {
4272 "tags": [
4273 "admin-users"
4274 ],
4275 "description": "强制注销用户:立即执行匿名化并禁用账号;仅超级管理员可操作。",
4276 "operationId": "delete_user",
4277 "parameters": [
4278 {
4279 "name": "uid",
4280 "in": "path",
4281 "description": "user id",
4282 "required": true,
4283 "schema": {
4284 "type": "string",
4285 "format": "uuid"
4286 }
4287 }
4288 ],
4289 "responses": {
4290 "200": {
4291 "description": "user deleted",
4292 "content": {
4293 "application/json": {
4294 "schema": {
4295 "$ref": "#/components/schemas/AppResponseData_DeleteUserResp"
4296 }
4297 }
4298 }
4299 },
4300 "403": {
4301 "description": "operation not allowed",
4302 "content": {
4303 "application/json": {
4304 "schema": {
4305 "$ref": "#/components/schemas/AppResponseData_NoData"
4306 }
4307 }
4308 }
4309 }
4310 }
4311 },
4312 "patch": {
4313 "tags": [
4314 "admin-users"
4315 ],
4316 "description": "更新用户账号标志:显示名、启用、受限、禁止登录。",
4317 "operationId": "update_user",
4318 "parameters": [
4319 {
4320 "name": "uid",
4321 "in": "path",
4322 "description": "user id",
4323 "required": true,
4324 "schema": {
4325 "type": "string",
4326 "format": "uuid"
4327 }
4328 }
4329 ],
4330 "requestBody": {
4331 "content": {
4332 "application/json": {
4333 "schema": {
4334 "$ref": "#/components/schemas/UpdateUserCmd"
4335 }
4336 }
4337 },
4338 "required": true
4339 },
4340 "responses": {
4341 "200": {
4342 "description": "user updated",
4343 "content": {
4344 "application/json": {
4345 "schema": {
4346 "$ref": "#/components/schemas/AppResponseData_AdminUserSummary"
4347 }
4348 }
4349 }
4350 },
4351 "404": {
4352 "description": "resource not found",
4353 "content": {
4354 "application/json": {
4355 "schema": {
4356 "$ref": "#/components/schemas/AppResponseData_NoData"
4357 }
4358 }
4359 }
4360 }
4361 }
4362 }
4363 },
4364 "/admin/users/{uid}/reset-password": {
4365 "post": {
4366 "tags": [
4367 "admin-users"
4368 ],
4369 "description": "重置用户口令并吊销全部会话。",
4370 "operationId": "reset_user_password",
4371 "parameters": [
4372 {
4373 "name": "uid",
4374 "in": "path",
4375 "description": "user id",
4376 "required": true,
4377 "schema": {
4378 "type": "string",
4379 "format": "uuid"
4380 }
4381 }
4382 ],
4383 "requestBody": {
4384 "content": {
4385 "application/json": {
4386 "schema": {
4387 "$ref": "#/components/schemas/ResetUserPasswordCmd"
4388 }
4389 }
4390 },
4391 "required": true
4392 },
4393 "responses": {
4394 "200": {
4395 "description": "password reset",
4396 "content": {
4397 "application/json": {
4398 "schema": {
4399 "$ref": "#/components/schemas/AppResponseData_NoData"
4400 }
4401 }
4402 }
4403 },
4404 "400": {
4405 "description": "request failed validation",
4406 "content": {
4407 "application/json": {
4408 "schema": {
4409 "$ref": "#/components/schemas/AppResponseData_NoData"
4410 }
4411 }
4412 }
4413 },
4414 "404": {
4415 "description": "resource not found",
4416 "content": {
4417 "application/json": {
4418 "schema": {
4419 "$ref": "#/components/schemas/AppResponseData_NoData"
4420 }
4421 }
4422 }
4423 }
4424 }
4425 }
4426 },
4427 "/admin/users/{uid}/revoke-sessions": {
4428 "post": {
4429 "tags": [
4430 "admin-users"
4431 ],
4432 "description": "吊销用户全部有效会话。",
4433 "operationId": "revoke_user_sessions",
4434 "parameters": [
4435 {
4436 "name": "uid",
4437 "in": "path",
4438 "description": "user id",
4439 "required": true,
4440 "schema": {
4441 "type": "string",
4442 "format": "uuid"
4443 }
4444 }
4445 ],
4446 "responses": {
4447 "200": {
4448 "description": "sessions revoked",
4449 "content": {
4450 "application/json": {
4451 "schema": {
4452 "$ref": "#/components/schemas/AppResponseData_RevokeSessionsResp"
4453 }
4454 }
4455 }
4456 },
4457 "404": {
4458 "description": "resource not found",
4459 "content": {
4460 "application/json": {
4461 "schema": {
4462 "$ref": "#/components/schemas/AppResponseData_NoData"
4463 }
4464 }
4465 }
4466 }
4467 }
4468 }
4469 },
4470 "/admin/users/{uid}/security": {
4471 "get": {
4472 "tags": [
4473 "admin-users"
4474 ],
4475 "description": "用户安全概览:二次验证状态、恢复码、活跃会话、SSH Key 与访问密钥数量。",
4476 "operationId": "get_user_security",
4477 "parameters": [
4478 {
4479 "name": "uid",
4480 "in": "path",
4481 "description": "user id",
4482 "required": true,
4483 "schema": {
4484 "type": "string",
4485 "format": "uuid"
4486 }
4487 }
4488 ],
4489 "responses": {
4490 "200": {
4491 "description": "security overview",
4492 "content": {
4493 "application/json": {
4494 "schema": {
4495 "$ref": "#/components/schemas/AppResponseData_AdminUserSecurityDto"
4496 }
4497 }
4498 }
4499 },
4500 "404": {
4501 "description": "resource not found",
4502 "content": {
4503 "application/json": {
4504 "schema": {
4505 "$ref": "#/components/schemas/AppResponseData_NoData"
4506 }
4507 }
4508 }
4509 }
4510 }
4511 }
4512 },
4513 "/admin/users/{uid}/sessions": {
4514 "get": {
4515 "tags": [
4516 "admin-users"
4517 ],
4518 "description": "用户会话列表:可按 kind 过滤、包含已吊销会话,用于会话级踢下线。",
4519 "operationId": "list_user_sessions",
4520 "parameters": [
4521 {
4522 "name": "uid",
4523 "in": "path",
4524 "description": "user id",
4525 "required": true,
4526 "schema": {
4527 "type": "string",
4528 "format": "uuid"
4529 }
4530 },
4531 {
4532 "name": "kind",
4533 "in": "query",
4534 "required": false,
4535 "schema": {
4536 "type": [
4537 "string",
4538 "null"
4539 ]
4540 }
4541 },
4542 {
4543 "name": "include_revoked",
4544 "in": "query",
4545 "required": false,
4546 "schema": {
4547 "type": [
4548 "boolean",
4549 "null"
4550 ]
4551 }
4552 },
4553 {
4554 "name": "limit",
4555 "in": "query",
4556 "required": false,
4557 "schema": {
4558 "type": [
4559 "integer",
4560 "null"
4561 ],
4562 "format": "int64",
4563 "minimum": 0
4564 }
4565 },
4566 {
4567 "name": "offset",
4568 "in": "query",
4569 "required": false,
4570 "schema": {
4571 "type": [
4572 "integer",
4573 "null"
4574 ],
4575 "format": "int64",
4576 "minimum": 0
4577 }
4578 }
4579 ],
4580 "responses": {
4581 "200": {
4582 "description": "session page",
4583 "content": {
4584 "application/json": {
4585 "schema": {
4586 "$ref": "#/components/schemas/AppResponseData_AdminUserSessionPage"
4587 }
4588 }
4589 }
4590 },
4591 "404": {
4592 "description": "resource not found",
4593 "content": {
4594 "application/json": {
4595 "schema": {
4596 "$ref": "#/components/schemas/AppResponseData_NoData"
4597 }
4598 }
4599 }
4600 }
4601 }
4602 }
4603 },
4604 "/admin/users/{uid}/sessions/{session_id}": {
4605 "delete": {
4606 "tags": [
4607 "admin-users"
4608 ],
4609 "description": "吊销用户单个会话;运维及以上角色可操作。",
4610 "operationId": "revoke_user_session",
4611 "parameters": [
4612 {
4613 "name": "uid",
4614 "in": "path",
4615 "description": "user id",
4616 "required": true,
4617 "schema": {
4618 "type": "string",
4619 "format": "uuid"
4620 }
4621 },
4622 {
4623 "name": "session_id",
4624 "in": "path",
4625 "description": "session id",
4626 "required": true,
4627 "schema": {
4628 "type": "string",
4629 "format": "uuid"
4630 }
4631 }
4632 ],
4633 "responses": {
4634 "200": {
4635 "description": "session revoked",
4636 "content": {
4637 "application/json": {
4638 "schema": {
4639 "$ref": "#/components/schemas/AppResponseData_NoData"
4640 }
4641 }
4642 }
4643 },
4644 "404": {
4645 "description": "resource not found",
4646 "content": {
4647 "application/json": {
4648 "schema": {
4649 "$ref": "#/components/schemas/AppResponseData_NoData"
4650 }
4651 }
4652 }
4653 }
4654 }
4655 }
4656 },
4657 "/admin/users/{uid}/suspend": {
4658 "post": {
4659 "tags": [
4660 "admin-users"
4661 ],
4662 "description": "封禁用户:写入封禁记录、标记受限并吊销全部会话。",
4663 "operationId": "suspend_user",
4664 "parameters": [
4665 {
4666 "name": "uid",
4667 "in": "path",
4668 "description": "user id",
4669 "required": true,
4670 "schema": {
4671 "type": "string",
4672 "format": "uuid"
4673 }
4674 }
4675 ],
4676 "requestBody": {
4677 "content": {
4678 "application/json": {
4679 "schema": {
4680 "$ref": "#/components/schemas/SuspendUserCmd"
4681 }
4682 }
4683 },
4684 "required": true
4685 },
4686 "responses": {
4687 "200": {
4688 "description": "user suspended",
4689 "content": {
4690 "application/json": {
4691 "schema": {
4692 "$ref": "#/components/schemas/AppResponseData_AdminSuspensionDto"
4693 }
4694 }
4695 }
4696 },
4697 "400": {
4698 "description": "request failed validation",
4699 "content": {
4700 "application/json": {
4701 "schema": {
4702 "$ref": "#/components/schemas/AppResponseData_NoData"
4703 }
4704 }
4705 }
4706 },
4707 "404": {
4708 "description": "resource not found",
4709 "content": {
4710 "application/json": {
4711 "schema": {
4712 "$ref": "#/components/schemas/AppResponseData_NoData"
4713 }
4714 }
4715 }
4716 }
4717 }
4718 }
4719 },
4720 "/admin/users/{uid}/suspensions/{suspension_id}/revoke": {
4721 "post": {
4722 "tags": [
4723 "admin-users"
4724 ],
4725 "description": "撤销用户封禁记录;无剩余生效封禁时解除受限标志。",
4726 "operationId": "revoke_suspension",
4727 "parameters": [
4728 {
4729 "name": "uid",
4730 "in": "path",
4731 "description": "user id",
4732 "required": true,
4733 "schema": {
4734 "type": "string",
4735 "format": "uuid"
4736 }
4737 },
4738 {
4739 "name": "suspension_id",
4740 "in": "path",
4741 "description": "suspension id",
4742 "required": true,
4743 "schema": {
4744 "type": "string",
4745 "format": "uuid"
4746 }
4747 }
4748 ],
4749 "responses": {
4750 "200": {
4751 "description": "suspension revoked",
4752 "content": {
4753 "application/json": {
4754 "schema": {
4755 "$ref": "#/components/schemas/AppResponseData_NoData"
4756 }
4757 }
4758 }
4759 },
4760 "404": {
4761 "description": "resource not found",
4762 "content": {
4763 "application/json": {
4764 "schema": {
4765 "$ref": "#/components/schemas/AppResponseData_NoData"
4766 }
4767 }
4768 }
4769 }
4770 }
4771 }
4772 },
4773 "/admin/users/{uid}/two-factor": {
4774 "delete": {
4775 "tags": [
4776 "admin-users"
4777 ],
4778 "description": "强制清除用户二次验证(用户遗失设备时使用);仅超级管理员可操作。",
4779 "operationId": "clear_user_two_factor",
4780 "parameters": [
4781 {
4782 "name": "uid",
4783 "in": "path",
4784 "description": "user id",
4785 "required": true,
4786 "schema": {
4787 "type": "string",
4788 "format": "uuid"
4789 }
4790 }
4791 ],
4792 "responses": {
4793 "200": {
4794 "description": "two-factor cleared",
4795 "content": {
4796 "application/json": {
4797 "schema": {
4798 "$ref": "#/components/schemas/AppResponseData_NoData"
4799 }
4800 }
4801 }
4802 },
4803 "403": {
4804 "description": "operation not allowed",
4805 "content": {
4806 "application/json": {
4807 "schema": {
4808 "$ref": "#/components/schemas/AppResponseData_NoData"
4809 }
4810 }
4811 }
4812 }
4813 }
4814 }
4815 }
4816 },
4817 "components": {
4818 "schemas": {
4819 "AddSpaceMemberCmd": {
4820 "type": "object",
4821 "required": [
4822 "user_id"
4823 ],
4824 "properties": {
4825 "alias_name": {
4826 "type": [
4827 "string",
4828 "null"
4829 ]
4830 },
4831 "user_id": {
4832 "type": "string",
4833 "format": "uuid"
4834 }
4835 }
4836 },
4837 "AddSpaceMemberResp": {
4838 "type": "object",
4839 "required": [
4840 "space_id",
4841 "user_id",
4842 "status",
4843 "added"
4844 ],
4845 "properties": {
4846 "added": {
4847 "type": "boolean"
4848 },
4849 "space_id": {
4850 "type": "string",
4851 "format": "uuid"
4852 },
4853 "status": {
4854 "type": "string"
4855 },
4856 "user_id": {
4857 "type": "string",
4858 "format": "uuid"
4859 }
4860 }
4861 },
4862 "AdminActRunDto": {
4863 "type": "object",
4864 "required": [
4865 "id",
4866 "repo_id",
4867 "repo_name",
4868 "repo_full_name",
4869 "workflow_file",
4870 "workflow_name",
4871 "event",
4872 "state",
4873 "commit_sha",
4874 "jobs_total",
4875 "jobs_active",
4876 "jobs_failed",
4877 "created_at"
4878 ],
4879 "properties": {
4880 "actions_id": {
4881 "type": [
4882 "integer",
4883 "null"
4884 ],
4885 "format": "int64"
4886 },
4887 "branch": {
4888 "type": [
4889 "string",
4890 "null"
4891 ]
4892 },
4893 "commit_sha": {
4894 "type": "string"
4895 },
4896 "created_at": {
4897 "type": "string",
4898 "format": "date-time"
4899 },
4900 "display_name": {
4901 "type": [
4902 "string",
4903 "null"
4904 ]
4905 },
4906 "event": {
4907 "type": "string"
4908 },
4909 "finished_at": {
4910 "type": [
4911 "string",
4912 "null"
4913 ],
4914 "format": "date-time"
4915 },
4916 "id": {
4917 "type": "string",
4918 "format": "uuid"
4919 },
4920 "jobs_active": {
4921 "type": "integer",
4922 "format": "int64",
4923 "minimum": 0
4924 },
4925 "jobs_failed": {
4926 "type": "integer",
4927 "format": "int64",
4928 "minimum": 0
4929 },
4930 "jobs_total": {
4931 "type": "integer",
4932 "format": "int64",
4933 "minimum": 0
4934 },
4935 "pr_number": {
4936 "type": [
4937 "integer",
4938 "null"
4939 ],
4940 "format": "int64"
4941 },
4942 "repo_full_name": {
4943 "type": "string"
4944 },
4945 "repo_id": {
4946 "type": "string",
4947 "format": "uuid"
4948 },
4949 "repo_name": {
4950 "type": "string"
4951 },
4952 "run_number": {
4953 "type": [
4954 "integer",
4955 "null"
4956 ],
4957 "format": "int64"
4958 },
4959 "space_id": {
4960 "type": [
4961 "string",
4962 "null"
4963 ],
4964 "format": "uuid"
4965 },
4966 "space_name": {
4967 "type": [
4968 "string",
4969 "null"
4970 ]
4971 },
4972 "started_at": {
4973 "type": [
4974 "string",
4975 "null"
4976 ],
4977 "format": "date-time"
4978 },
4979 "state": {
4980 "type": "string"
4981 },
4982 "tag": {
4983 "type": [
4984 "string",
4985 "null"
4986 ]
4987 },
4988 "workflow_file": {
4989 "type": "string"
4990 },
4991 "workflow_name": {
4992 "type": "string"
4993 }
4994 }
4995 },
4996 "AdminActRunPage": {
4997 "type": "object",
4998 "required": [
4999 "items",
5000 "total",
5001 "limit",
5002 "offset"
5003 ],
5004 "properties": {
5005 "items": {
5006 "type": "array",
5007 "items": {
5008 "$ref": "#/components/schemas/AdminActRunDto"
5009 }
5010 },
5011 "limit": {
5012 "type": "integer",
5013 "format": "int64",
5014 "minimum": 0
5015 },
5016 "offset": {
5017 "type": "integer",
5018 "format": "int64",
5019 "minimum": 0
5020 },
5021 "total": {
5022 "type": "integer",
5023 "format": "int64",
5024 "minimum": 0
5025 }
5026 }
5027 },
5028 "AdminActSummary": {
5029 "type": "object",
5030 "required": [
5031 "runners_total",
5032 "runners_active",
5033 "runners_busy",
5034 "jobs_queued",
5035 "jobs_running",
5036 "runs_queued",
5037 "runs_running",
5038 "runs_success",
5039 "runs_failure",
5040 "generated_at"
5041 ],
5042 "properties": {
5043 "generated_at": {
5044 "type": "string",
5045 "format": "date-time"
5046 },
5047 "jobs_queued": {
5048 "type": "integer",
5049 "format": "int64",
5050 "minimum": 0
5051 },
5052 "jobs_running": {
5053 "type": "integer",
5054 "format": "int64",
5055 "minimum": 0
5056 },
5057 "runners_active": {
5058 "type": "integer",
5059 "format": "int64",
5060 "minimum": 0
5061 },
5062 "runners_busy": {
5063 "type": "integer",
5064 "format": "int64",
5065 "minimum": 0
5066 },
5067 "runners_total": {
5068 "type": "integer",
5069 "format": "int64",
5070 "minimum": 0
5071 },
5072 "runs_failure": {
5073 "type": "integer",
5074 "format": "int64",
5075 "minimum": 0
5076 },
5077 "runs_queued": {
5078 "type": "integer",
5079 "format": "int64",
5080 "minimum": 0
5081 },
5082 "runs_running": {
5083 "type": "integer",
5084 "format": "int64",
5085 "minimum": 0
5086 },
5087 "runs_success": {
5088 "type": "integer",
5089 "format": "int64",
5090 "minimum": 0
5091 }
5092 }
5093 },
5094 "AdminChatAttachmentDto": {
5095 "type": "object",
5096 "required": [
5097 "id",
5098 "user_id",
5099 "filename",
5100 "content_type",
5101 "size",
5102 "bucket",
5103 "s3_key",
5104 "status",
5105 "created_at"
5106 ],
5107 "properties": {
5108 "bucket": {
5109 "type": "string"
5110 },
5111 "content_type": {
5112 "type": "string"
5113 },
5114 "created_at": {
5115 "type": "string",
5116 "format": "date-time"
5117 },
5118 "description": {
5119 "type": [
5120 "string",
5121 "null"
5122 ]
5123 },
5124 "display_name": {
5125 "type": [
5126 "string",
5127 "null"
5128 ]
5129 },
5130 "filename": {
5131 "type": "string"
5132 },
5133 "id": {
5134 "type": "string",
5135 "format": "uuid"
5136 },
5137 "message_id": {
5138 "type": [
5139 "string",
5140 "null"
5141 ],
5142 "format": "uuid"
5143 },
5144 "room_id": {
5145 "type": [
5146 "string",
5147 "null"
5148 ],
5149 "format": "uuid"
5150 },
5151 "s3_key": {
5152 "type": "string"
5153 },
5154 "size": {
5155 "type": "integer",
5156 "format": "int64"
5157 },
5158 "status": {
5159 "type": "string"
5160 },
5161 "user_id": {
5162 "type": "string",
5163 "format": "uuid"
5164 },
5165 "username": {
5166 "type": [
5167 "string",
5168 "null"
5169 ]
5170 }
5171 }
5172 },
5173 "AdminChatKindCount": {
5174 "type": "object",
5175 "required": [
5176 "kind",
5177 "count"
5178 ],
5179 "properties": {
5180 "count": {
5181 "type": "integer",
5182 "format": "int64"
5183 },
5184 "kind": {
5185 "type": "string"
5186 }
5187 }
5188 },
5189 "AdminChatMessageDetail": {
5190 "type": "object",
5191 "required": [
5192 "message",
5193 "edits",
5194 "reactions",
5195 "attachments"
5196 ],
5197 "properties": {
5198 "attachments": {
5199 "type": "array",
5200 "items": {
5201 "$ref": "#/components/schemas/AdminChatAttachmentDto"
5202 }
5203 },
5204 "edits": {
5205 "type": "array",
5206 "items": {
5207 "$ref": "#/components/schemas/AdminChatMessageEditDto"
5208 }
5209 },
5210 "message": {
5211 "$ref": "#/components/schemas/AdminChatMessageDto"
5212 },
5213 "reactions": {
5214 "type": "array",
5215 "items": {
5216 "$ref": "#/components/schemas/AdminChatReactionGroupDto"
5217 }
5218 },
5219 "thread": {
5220 "oneOf": [
5221 {
5222 "type": "null"
5223 },
5224 {
5225 "$ref": "#/components/schemas/AdminChatThreadDto"
5226 }
5227 ]
5228 }
5229 }
5230 },
5231 "AdminChatMessageDto": {
5232 "type": "object",
5233 "required": [
5234 "id",
5235 "room_id",
5236 "author_id",
5237 "author_type",
5238 "message_type",
5239 "content",
5240 "seq",
5241 "flags",
5242 "pinned",
5243 "attachment_count",
5244 "reaction_count",
5245 "created_at"
5246 ],
5247 "properties": {
5248 "attachment_count": {
5249 "type": "integer",
5250 "format": "int64"
5251 },
5252 "author_display_name": {
5253 "type": [
5254 "string",
5255 "null"
5256 ]
5257 },
5258 "author_id": {
5259 "type": "string",
5260 "format": "uuid"
5261 },
5262 "author_type": {
5263 "type": "string"
5264 },
5265 "author_username": {
5266 "type": [
5267 "string",
5268 "null"
5269 ]
5270 },
5271 "content": {
5272 "type": "string"
5273 },
5274 "created_at": {
5275 "type": "string",
5276 "format": "date-time"
5277 },
5278 "deleted_at": {
5279 "type": [
5280 "string",
5281 "null"
5282 ],
5283 "format": "date-time"
5284 },
5285 "edited_at": {
5286 "type": [
5287 "string",
5288 "null"
5289 ],
5290 "format": "date-time"
5291 },
5292 "flags": {
5293 "type": "integer",
5294 "format": "int64"
5295 },
5296 "id": {
5297 "type": "string",
5298 "format": "uuid"
5299 },
5300 "message_type": {
5301 "type": "string"
5302 },
5303 "pinned": {
5304 "type": "boolean"
5305 },
5306 "reaction_count": {
5307 "type": "integer",
5308 "format": "int64"
5309 },
5310 "reply_to_id": {
5311 "type": [
5312 "string",
5313 "null"
5314 ],
5315 "format": "uuid"
5316 },
5317 "room_id": {
5318 "type": "string",
5319 "format": "uuid"
5320 },
5321 "room_name": {
5322 "type": [
5323 "string",
5324 "null"
5325 ]
5326 },
5327 "seq": {
5328 "type": "integer",
5329 "format": "int64"
5330 },
5331 "thread_id": {
5332 "type": [
5333 "string",
5334 "null"
5335 ],
5336 "format": "uuid"
5337 }
5338 }
5339 },
5340 "AdminChatMessageEditDto": {
5341 "type": "object",
5342 "required": [
5343 "id",
5344 "editor_id",
5345 "content",
5346 "created_at"
5347 ],
5348 "properties": {
5349 "content": {
5350 "type": "string"
5351 },
5352 "created_at": {
5353 "type": "string",
5354 "format": "date-time"
5355 },
5356 "editor_id": {
5357 "type": "string",
5358 "format": "uuid"
5359 },
5360 "editor_username": {
5361 "type": [
5362 "string",
5363 "null"
5364 ]
5365 },
5366 "id": {
5367 "type": "string",
5368 "format": "uuid"
5369 }
5370 }
5371 },
5372 "AdminChatReactionGroupDto": {
5373 "type": "object",
5374 "required": [
5375 "emoji",
5376 "count"
5377 ],
5378 "properties": {
5379 "count": {
5380 "type": "integer",
5381 "format": "int64"
5382 },
5383 "emoji": {
5384 "type": "string"
5385 }
5386 }
5387 },
5388 "AdminChatRoomDetail": {
5389 "type": "object",
5390 "required": [
5391 "room",
5392 "deleted_messages",
5393 "threads",
5394 "attachments",
5395 "attachment_bytes",
5396 "bans",
5397 "invites"
5398 ],
5399 "properties": {
5400 "attachment_bytes": {
5401 "type": "integer",
5402 "format": "int64"
5403 },
5404 "attachments": {
5405 "type": "integer",
5406 "format": "int64"
5407 },
5408 "bans": {
5409 "type": "integer",
5410 "format": "int64"
5411 },
5412 "deleted_messages": {
5413 "type": "integer",
5414 "format": "int64"
5415 },
5416 "invites": {
5417 "type": "integer",
5418 "format": "int64"
5419 },
5420 "room": {
5421 "$ref": "#/components/schemas/AdminChatRoomSummary"
5422 },
5423 "threads": {
5424 "type": "integer",
5425 "format": "int64"
5426 }
5427 }
5428 },
5429 "AdminChatRoomMemberDto": {
5430 "type": "object",
5431 "required": [
5432 "user_id",
5433 "role",
5434 "joined_at"
5435 ],
5436 "properties": {
5437 "display_name": {
5438 "type": [
5439 "string",
5440 "null"
5441 ]
5442 },
5443 "joined_at": {
5444 "type": "string",
5445 "format": "date-time"
5446 },
5447 "left_at": {
5448 "type": [
5449 "string",
5450 "null"
5451 ],
5452 "format": "date-time"
5453 },
5454 "nick": {
5455 "type": [
5456 "string",
5457 "null"
5458 ]
5459 },
5460 "role": {
5461 "type": "string"
5462 },
5463 "user_id": {
5464 "type": "string",
5465 "format": "uuid"
5466 },
5467 "username": {
5468 "type": [
5469 "string",
5470 "null"
5471 ]
5472 }
5473 }
5474 },
5475 "AdminChatRoomSummary": {
5476 "type": "object",
5477 "required": [
5478 "id",
5479 "kind",
5480 "name",
5481 "lower_name",
5482 "owner_id",
5483 "is_private",
5484 "nsfw",
5485 "is_active",
5486 "members",
5487 "messages",
5488 "created_at",
5489 "updated_at"
5490 ],
5491 "properties": {
5492 "created_at": {
5493 "type": "string",
5494 "format": "date-time"
5495 },
5496 "id": {
5497 "type": "string",
5498 "format": "uuid"
5499 },
5500 "is_active": {
5501 "type": "boolean"
5502 },
5503 "is_private": {
5504 "type": "boolean"
5505 },
5506 "kind": {
5507 "type": "string"
5508 },
5509 "last_message_at": {
5510 "type": [
5511 "string",
5512 "null"
5513 ],
5514 "format": "date-time"
5515 },
5516 "lower_name": {
5517 "type": "string"
5518 },
5519 "members": {
5520 "type": "integer",
5521 "format": "int64"
5522 },
5523 "messages": {
5524 "type": "integer",
5525 "format": "int64"
5526 },
5527 "name": {
5528 "type": "string"
5529 },
5530 "nsfw": {
5531 "type": "boolean"
5532 },
5533 "owner_id": {
5534 "type": "string",
5535 "format": "uuid"
5536 },
5537 "owner_username": {
5538 "type": [
5539 "string",
5540 "null"
5541 ]
5542 },
5543 "space_id": {
5544 "type": [
5545 "string",
5546 "null"
5547 ],
5548 "format": "uuid"
5549 },
5550 "space_name": {
5551 "type": [
5552 "string",
5553 "null"
5554 ]
5555 },
5556 "topic": {
5557 "type": [
5558 "string",
5559 "null"
5560 ]
5561 },
5562 "updated_at": {
5563 "type": "string",
5564 "format": "date-time"
5565 }
5566 }
5567 },
5568 "AdminChatStatsDto": {
5569 "type": "object",
5570 "required": [
5571 "rooms",
5572 "active_rooms",
5573 "private_rooms",
5574 "kinds",
5575 "messages",
5576 "deleted_messages",
5577 "messages_24h",
5578 "threads",
5579 "attachments",
5580 "attachment_bytes",
5581 "pending_attachments",
5582 "members",
5583 "bans"
5584 ],
5585 "properties": {
5586 "active_rooms": {
5587 "type": "integer",
5588 "format": "int64"
5589 },
5590 "attachment_bytes": {
5591 "type": "integer",
5592 "format": "int64"
5593 },
5594 "attachments": {
5595 "type": "integer",
5596 "format": "int64"
5597 },
5598 "bans": {
5599 "type": "integer",
5600 "format": "int64"
5601 },
5602 "deleted_messages": {
5603 "type": "integer",
5604 "format": "int64"
5605 },
5606 "kinds": {
5607 "type": "array",
5608 "items": {
5609 "$ref": "#/components/schemas/AdminChatKindCount"
5610 }
5611 },
5612 "members": {
5613 "type": "integer",
5614 "format": "int64"
5615 },
5616 "messages": {
5617 "type": "integer",
5618 "format": "int64"
5619 },
5620 "messages_24h": {
5621 "type": "integer",
5622 "format": "int64"
5623 },
5624 "pending_attachments": {
5625 "type": "integer",
5626 "format": "int64"
5627 },
5628 "private_rooms": {
5629 "type": "integer",
5630 "format": "int64"
5631 },
5632 "rooms": {
5633 "type": "integer",
5634 "format": "int64"
5635 },
5636 "threads": {
5637 "type": "integer",
5638 "format": "int64"
5639 }
5640 }
5641 },
5642 "AdminChatThreadDto": {
5643 "type": "object",
5644 "required": [
5645 "id",
5646 "owner_id",
5647 "reply_count",
5648 "participant_count",
5649 "archived",
5650 "locked",
5651 "created_at"
5652 ],
5653 "properties": {
5654 "archived": {
5655 "type": "boolean"
5656 },
5657 "created_at": {
5658 "type": "string",
5659 "format": "date-time"
5660 },
5661 "id": {
5662 "type": "string",
5663 "format": "uuid"
5664 },
5665 "locked": {
5666 "type": "boolean"
5667 },
5668 "name": {
5669 "type": [
5670 "string",
5671 "null"
5672 ]
5673 },
5674 "owner_id": {
5675 "type": "string",
5676 "format": "uuid"
5677 },
5678 "participant_count": {
5679 "type": "integer",
5680 "format": "int64"
5681 },
5682 "reply_count": {
5683 "type": "integer",
5684 "format": "int64"
5685 }
5686 }
5687 },
5688 "AdminDto": {
5689 "type": "object",
5690 "required": [
5691 "id",
5692 "username",
5693 "display_name",
5694 "role",
5695 "is_active",
5696 "must_change_password",
5697 "created_at",
5698 "updated_at"
5699 ],
5700 "properties": {
5701 "created_at": {
5702 "type": "string",
5703 "format": "date-time"
5704 },
5705 "display_name": {
5706 "type": "string"
5707 },
5708 "id": {
5709 "type": "string",
5710 "format": "uuid"
5711 },
5712 "is_active": {
5713 "type": "boolean"
5714 },
5715 "last_login_at": {
5716 "type": [
5717 "string",
5718 "null"
5719 ],
5720 "format": "date-time"
5721 },
5722 "last_login_ip": {
5723 "type": [
5724 "string",
5725 "null"
5726 ]
5727 },
5728 "must_change_password": {
5729 "type": "boolean"
5730 },
5731 "role": {
5732 "$ref": "#/components/schemas/AdminRole"
5733 },
5734 "updated_at": {
5735 "type": "string",
5736 "format": "date-time"
5737 },
5738 "username": {
5739 "type": "string"
5740 }
5741 }
5742 },
5743 "AdminEndpointDto": {
5744 "type": "object",
5745 "required": [
5746 "enabled",
5747 "bind_addr",
5748 "port",
5749 "session_cookie_name",
5750 "session_table_name",
5751 "cors_allow_origins",
5752 "cors_allow_credentials"
5753 ],
5754 "properties": {
5755 "bind_addr": {
5756 "type": "string"
5757 },
5758 "cors_allow_credentials": {
5759 "type": "boolean"
5760 },
5761 "cors_allow_origins": {
5762 "type": "array",
5763 "items": {
5764 "type": "string"
5765 }
5766 },
5767 "enabled": {
5768 "type": "boolean"
5769 },
5770 "port": {
5771 "type": "integer",
5772 "format": "int32",
5773 "minimum": 0
5774 },
5775 "session_cookie_name": {
5776 "type": "string"
5777 },
5778 "session_table_name": {
5779 "type": "string"
5780 }
5781 }
5782 },
5783 "AdminLoginCmd": {
5784 "type": "object",
5785 "required": [
5786 "username",
5787 "password"
5788 ],
5789 "properties": {
5790 "password": {
5791 "type": "string"
5792 },
5793 "username": {
5794 "type": "string"
5795 }
5796 }
5797 },
5798 "AdminLoginResp": {
5799 "type": "object",
5800 "required": [
5801 "admin",
5802 "must_change_password"
5803 ],
5804 "properties": {
5805 "admin": {
5806 "$ref": "#/components/schemas/AdminDto"
5807 },
5808 "must_change_password": {
5809 "type": "boolean"
5810 }
5811 }
5812 },
5813 "AdminRepoPage": {
5814 "type": "object",
5815 "required": [
5816 "items",
5817 "total",
5818 "limit",
5819 "offset"
5820 ],
5821 "properties": {
5822 "items": {
5823 "type": "array",
5824 "items": {
5825 "$ref": "#/components/schemas/AdminRepoSummary"
5826 }
5827 },
5828 "limit": {
5829 "type": "integer",
5830 "format": "int64",
5831 "minimum": 0
5832 },
5833 "offset": {
5834 "type": "integer",
5835 "format": "int64",
5836 "minimum": 0
5837 },
5838 "total": {
5839 "type": "integer",
5840 "format": "int64",
5841 "minimum": 0
5842 }
5843 }
5844 },
5845 "AdminRepoSummary": {
5846 "type": "object",
5847 "required": [
5848 "id",
5849 "dir_id",
5850 "name",
5851 "lower_name",
5852 "full_name",
5853 "default_branch",
5854 "is_private",
5855 "is_archived",
5856 "enable_lfs",
5857 "size",
5858 "git_size",
5859 "lfs_size",
5860 "nums_commits",
5861 "nums_branches",
5862 "nums_tags",
5863 "created_at",
5864 "updated_at"
5865 ],
5866 "properties": {
5867 "created_at": {
5868 "type": "string",
5869 "format": "date-time"
5870 },
5871 "default_branch": {
5872 "type": "string"
5873 },
5874 "description": {
5875 "type": [
5876 "string",
5877 "null"
5878 ]
5879 },
5880 "dir_id": {
5881 "type": "string",
5882 "format": "uuid"
5883 },
5884 "enable_lfs": {
5885 "type": "boolean"
5886 },
5887 "full_name": {
5888 "type": "string"
5889 },
5890 "git_size": {
5891 "type": "integer",
5892 "format": "int64"
5893 },
5894 "id": {
5895 "type": "string",
5896 "format": "uuid"
5897 },
5898 "is_archived": {
5899 "type": "boolean"
5900 },
5901 "is_private": {
5902 "type": "boolean"
5903 },
5904 "last_pushed_at": {
5905 "type": [
5906 "string",
5907 "null"
5908 ],
5909 "format": "date-time"
5910 },
5911 "lfs_size": {
5912 "type": "integer",
5913 "format": "int64"
5914 },
5915 "lower_name": {
5916 "type": "string"
5917 },
5918 "name": {
5919 "type": "string"
5920 },
5921 "nums_branches": {
5922 "type": "integer",
5923 "format": "int32"
5924 },
5925 "nums_commits": {
5926 "type": "integer",
5927 "format": "int32"
5928 },
5929 "nums_tags": {
5930 "type": "integer",
5931 "format": "int32"
5932 },
5933 "primary_language": {
5934 "type": [
5935 "string",
5936 "null"
5937 ]
5938 },
5939 "size": {
5940 "type": "integer",
5941 "format": "int64"
5942 },
5943 "space_id": {
5944 "type": [
5945 "string",
5946 "null"
5947 ],
5948 "format": "uuid"
5949 },
5950 "space_lower_name": {
5951 "type": [
5952 "string",
5953 "null"
5954 ]
5955 },
5956 "space_name": {
5957 "type": [
5958 "string",
5959 "null"
5960 ]
5961 },
5962 "storage_limit_size": {
5963 "type": [
5964 "integer",
5965 "null"
5966 ],
5967 "format": "int64"
5968 },
5969 "updated_at": {
5970 "type": "string",
5971 "format": "date-time"
5972 }
5973 }
5974 },
5975 "AdminRole": {
5976 "type": "string",
5977 "enum": [
5978 "super_admin",
5979 "operator",
5980 "viewer"
5981 ]
5982 },
5983 "AdminSpaceDetail": {
5984 "type": "object",
5985 "required": [
5986 "space",
5987 "repos_count",
5988 "repos_size",
5989 "rooms_count",
5990 "dirs_count"
5991 ],
5992 "properties": {
5993 "dirs_count": {
5994 "type": "integer",
5995 "format": "int64"
5996 },
5997 "repos_count": {
5998 "type": "integer",
5999 "format": "int64"
6000 },
6001 "repos_size": {
6002 "type": "integer",
6003 "format": "int64"
6004 },
6005 "rooms_count": {
6006 "type": "integer",
6007 "format": "int64"
6008 },
6009 "space": {
6010 "$ref": "#/components/schemas/AdminSpaceSummary"
6011 }
6012 }
6013 },
6014 "AdminSpaceMemberDto": {
6015 "type": "object",
6016 "required": [
6017 "user_id",
6018 "status",
6019 "joined_at"
6020 ],
6021 "properties": {
6022 "alias_name": {
6023 "type": [
6024 "string",
6025 "null"
6026 ]
6027 },
6028 "display_name": {
6029 "type": [
6030 "string",
6031 "null"
6032 ]
6033 },
6034 "joined_at": {
6035 "type": "string",
6036 "format": "date-time"
6037 },
6038 "last_active_at": {
6039 "type": [
6040 "string",
6041 "null"
6042 ],
6043 "format": "date-time"
6044 },
6045 "status": {
6046 "type": "string"
6047 },
6048 "user_id": {
6049 "type": "string",
6050 "format": "uuid"
6051 },
6052 "username": {
6053 "type": [
6054 "string",
6055 "null"
6056 ]
6057 }
6058 }
6059 },
6060 "AdminSpaceSummary": {
6061 "type": "object",
6062 "required": [
6063 "id",
6064 "name",
6065 "lower_name",
6066 "owner_id",
6067 "is_private",
6068 "is_active",
6069 "allow_join",
6070 "allow_invite",
6071 "member_must_enable_2fa",
6072 "nums_members",
6073 "created_at",
6074 "updated_at"
6075 ],
6076 "properties": {
6077 "allow_invite": {
6078 "type": "boolean"
6079 },
6080 "allow_join": {
6081 "type": "boolean"
6082 },
6083 "created_at": {
6084 "type": "string",
6085 "format": "date-time"
6086 },
6087 "description": {
6088 "type": [
6089 "string",
6090 "null"
6091 ]
6092 },
6093 "id": {
6094 "type": "string",
6095 "format": "uuid"
6096 },
6097 "is_active": {
6098 "type": "boolean"
6099 },
6100 "is_private": {
6101 "type": "boolean"
6102 },
6103 "lower_name": {
6104 "type": "string"
6105 },
6106 "member_must_enable_2fa": {
6107 "type": "boolean"
6108 },
6109 "name": {
6110 "type": "string"
6111 },
6112 "nums_members": {
6113 "type": "integer",
6114 "format": "int64"
6115 },
6116 "owner_id": {
6117 "type": "string",
6118 "format": "uuid"
6119 },
6120 "owner_username": {
6121 "type": [
6122 "string",
6123 "null"
6124 ]
6125 },
6126 "updated_at": {
6127 "type": "string",
6128 "format": "date-time"
6129 }
6130 }
6131 },
6132 "AdminSuspensionDto": {
6133 "type": "object",
6134 "required": [
6135 "id",
6136 "suspension_type",
6137 "starts_at"
6138 ],
6139 "properties": {
6140 "ends_at": {
6141 "type": [
6142 "string",
6143 "null"
6144 ],
6145 "format": "date-time"
6146 },
6147 "id": {
6148 "type": "string",
6149 "format": "uuid"
6150 },
6151 "reason": {
6152 "type": [
6153 "string",
6154 "null"
6155 ]
6156 },
6157 "revoked_at": {
6158 "type": [
6159 "string",
6160 "null"
6161 ],
6162 "format": "date-time"
6163 },
6164 "starts_at": {
6165 "type": "string",
6166 "format": "date-time"
6167 },
6168 "suspended_by": {
6169 "type": [
6170 "string",
6171 "null"
6172 ],
6173 "format": "uuid"
6174 },
6175 "suspension_type": {
6176 "type": "string"
6177 }
6178 }
6179 },
6180 "AdminUserDetail": {
6181 "type": "object",
6182 "required": [
6183 "user",
6184 "emails",
6185 "sessions",
6186 "spaces",
6187 "suspensions"
6188 ],
6189 "properties": {
6190 "emails": {
6191 "type": "array",
6192 "items": {
6193 "$ref": "#/components/schemas/AdminUserEmailDto"
6194 }
6195 },
6196 "sessions": {
6197 "type": "array",
6198 "items": {
6199 "$ref": "#/components/schemas/AdminUserSessionDto"
6200 }
6201 },
6202 "spaces": {
6203 "type": "array",
6204 "items": {
6205 "$ref": "#/components/schemas/AdminUserSpaceDto"
6206 }
6207 },
6208 "suspensions": {
6209 "type": "array",
6210 "items": {
6211 "$ref": "#/components/schemas/AdminSuspensionDto"
6212 }
6213 },
6214 "user": {
6215 "$ref": "#/components/schemas/AdminUserSummary"
6216 }
6217 }
6218 },
6219 "AdminUserEmailDto": {
6220 "type": "object",
6221 "required": [
6222 "id",
6223 "email",
6224 "is_primary",
6225 "is_activated",
6226 "created_at"
6227 ],
6228 "properties": {
6229 "created_at": {
6230 "type": "string",
6231 "format": "date-time"
6232 },
6233 "email": {
6234 "type": "string"
6235 },
6236 "id": {
6237 "type": "string",
6238 "format": "uuid"
6239 },
6240 "is_activated": {
6241 "type": "boolean"
6242 },
6243 "is_primary": {
6244 "type": "boolean"
6245 }
6246 }
6247 },
6248 "AdminUserSecurityDto": {
6249 "type": "object",
6250 "required": [
6251 "totp_enabled",
6252 "recovery_codes_total",
6253 "recovery_codes_used",
6254 "active_sessions",
6255 "ssh_keys",
6256 "access_keys",
6257 "passwd_version"
6258 ],
6259 "properties": {
6260 "access_keys": {
6261 "type": "integer",
6262 "format": "int64"
6263 },
6264 "active_sessions": {
6265 "type": "integer",
6266 "format": "int64"
6267 },
6268 "passwd_version": {
6269 "type": "integer",
6270 "format": "int64"
6271 },
6272 "password_last_changed_at": {
6273 "type": [
6274 "string",
6275 "null"
6276 ],
6277 "format": "date-time"
6278 },
6279 "recovery_codes_total": {
6280 "type": "integer",
6281 "format": "int64"
6282 },
6283 "recovery_codes_used": {
6284 "type": "integer",
6285 "format": "int64"
6286 },
6287 "ssh_keys": {
6288 "type": "integer",
6289 "format": "int64"
6290 },
6291 "totp_enabled": {
6292 "type": "boolean"
6293 }
6294 }
6295 },
6296 "AdminUserSessionDto": {
6297 "type": "object",
6298 "required": [
6299 "id",
6300 "kind",
6301 "last_seen_at",
6302 "created_at",
6303 "expires_at",
6304 "is_revoked"
6305 ],
6306 "properties": {
6307 "created_at": {
6308 "type": "string",
6309 "format": "date-time"
6310 },
6311 "expires_at": {
6312 "type": "string",
6313 "format": "date-time"
6314 },
6315 "id": {
6316 "type": "string",
6317 "format": "uuid"
6318 },
6319 "is_revoked": {
6320 "type": "boolean"
6321 },
6322 "kind": {
6323 "type": "string"
6324 },
6325 "last_seen_at": {
6326 "type": "string",
6327 "format": "date-time"
6328 }
6329 }
6330 },
6331 "AdminUserSessionPage": {
6332 "type": "object",
6333 "required": [
6334 "items",
6335 "total",
6336 "limit",
6337 "offset"
6338 ],
6339 "properties": {
6340 "items": {
6341 "type": "array",
6342 "items": {
6343 "$ref": "#/components/schemas/AdminUserSessionRow"
6344 }
6345 },
6346 "limit": {
6347 "type": "integer",
6348 "format": "int64",
6349 "minimum": 0
6350 },
6351 "offset": {
6352 "type": "integer",
6353 "format": "int64",
6354 "minimum": 0
6355 },
6356 "total": {
6357 "type": "integer",
6358 "format": "int64"
6359 }
6360 }
6361 },
6362 "AdminUserSessionRow": {
6363 "type": "object",
6364 "required": [
6365 "id",
6366 "kind",
6367 "last_seen_at",
6368 "created_at",
6369 "expires_at",
6370 "is_revoked"
6371 ],
6372 "properties": {
6373 "app_id": {
6374 "type": [
6375 "string",
6376 "null"
6377 ]
6378 },
6379 "client_ip_hash": {
6380 "type": [
6381 "string",
6382 "null"
6383 ]
6384 },
6385 "created_at": {
6386 "type": "string",
6387 "format": "date-time"
6388 },
6389 "device_id": {
6390 "type": [
6391 "string",
6392 "null"
6393 ],
6394 "format": "uuid"
6395 },
6396 "expires_at": {
6397 "type": "string",
6398 "format": "date-time"
6399 },
6400 "id": {
6401 "type": "string",
6402 "format": "uuid"
6403 },
6404 "is_revoked": {
6405 "type": "boolean"
6406 },
6407 "kind": {
6408 "type": "string"
6409 },
6410 "last_seen_at": {
6411 "type": "string",
6412 "format": "date-time"
6413 },
6414 "revoked_at": {
6415 "type": [
6416 "string",
6417 "null"
6418 ],
6419 "format": "date-time"
6420 },
6421 "user_agent_hash": {
6422 "type": [
6423 "string",
6424 "null"
6425 ]
6426 }
6427 }
6428 },
6429 "AdminUserSpaceDto": {
6430 "type": "object",
6431 "required": [
6432 "id",
6433 "name",
6434 "lower_name",
6435 "is_active"
6436 ],
6437 "properties": {
6438 "id": {
6439 "type": "string",
6440 "format": "uuid"
6441 },
6442 "is_active": {
6443 "type": "boolean"
6444 },
6445 "lower_name": {
6446 "type": "string"
6447 },
6448 "name": {
6449 "type": "string"
6450 }
6451 }
6452 },
6453 "AdminUserSummary": {
6454 "type": "object",
6455 "required": [
6456 "uid",
6457 "username",
6458 "display_name",
6459 "avatar_url",
6460 "is_active",
6461 "is_restricted",
6462 "prohibit_login",
6463 "bot",
6464 "system",
6465 "suspended",
6466 "created_at"
6467 ],
6468 "properties": {
6469 "avatar_url": {
6470 "type": "string"
6471 },
6472 "bot": {
6473 "type": "boolean"
6474 },
6475 "created_at": {
6476 "type": "string",
6477 "format": "date-time"
6478 },
6479 "display_name": {
6480 "type": "string"
6481 },
6482 "is_active": {
6483 "type": "boolean"
6484 },
6485 "is_restricted": {
6486 "type": "boolean"
6487 },
6488 "last_login_at": {
6489 "type": [
6490 "string",
6491 "null"
6492 ],
6493 "format": "date-time"
6494 },
6495 "prohibit_login": {
6496 "type": "boolean"
6497 },
6498 "suspended": {
6499 "type": "boolean"
6500 },
6501 "system": {
6502 "type": "boolean"
6503 },
6504 "uid": {
6505 "type": "string",
6506 "format": "uuid"
6507 },
6508 "username": {
6509 "type": "string"
6510 }
6511 }
6512 },
6513 "AppResponseData_AddSpaceMemberResp": {
6514 "type": "object",
6515 "required": [
6516 "code",
6517 "message",
6518 "request_id",
6519 "log_id"
6520 ],
6521 "properties": {
6522 "code": {
6523 "type": "integer",
6524 "format": "int32"
6525 },
6526 "data": {
6527 "type": "object",
6528 "required": [
6529 "space_id",
6530 "user_id",
6531 "status",
6532 "added"
6533 ],
6534 "properties": {
6535 "added": {
6536 "type": "boolean"
6537 },
6538 "space_id": {
6539 "type": "string",
6540 "format": "uuid"
6541 },
6542 "status": {
6543 "type": "string"
6544 },
6545 "user_id": {
6546 "type": "string",
6547 "format": "uuid"
6548 }
6549 }
6550 },
6551 "error": {
6552 "type": [
6553 "string",
6554 "null"
6555 ]
6556 },
6557 "error_code": {
6558 "type": [
6559 "string",
6560 "null"
6561 ]
6562 },
6563 "log_id": {
6564 "type": "string"
6565 },
6566 "message": {
6567 "type": "string"
6568 },
6569 "request_id": {
6570 "type": "string"
6571 }
6572 }
6573 },
6574 "AppResponseData_AdminActRunPage": {
6575 "type": "object",
6576 "required": [
6577 "code",
6578 "message",
6579 "request_id",
6580 "log_id"
6581 ],
6582 "properties": {
6583 "code": {
6584 "type": "integer",
6585 "format": "int32"
6586 },
6587 "data": {
6588 "type": "object",
6589 "required": [
6590 "items",
6591 "total",
6592 "limit",
6593 "offset"
6594 ],
6595 "properties": {
6596 "items": {
6597 "type": "array",
6598 "items": {
6599 "$ref": "#/components/schemas/AdminActRunDto"
6600 }
6601 },
6602 "limit": {
6603 "type": "integer",
6604 "format": "int64",
6605 "minimum": 0
6606 },
6607 "offset": {
6608 "type": "integer",
6609 "format": "int64",
6610 "minimum": 0
6611 },
6612 "total": {
6613 "type": "integer",
6614 "format": "int64",
6615 "minimum": 0
6616 }
6617 }
6618 },
6619 "error": {
6620 "type": [
6621 "string",
6622 "null"
6623 ]
6624 },
6625 "error_code": {
6626 "type": [
6627 "string",
6628 "null"
6629 ]
6630 },
6631 "log_id": {
6632 "type": "string"
6633 },
6634 "message": {
6635 "type": "string"
6636 },
6637 "request_id": {
6638 "type": "string"
6639 }
6640 }
6641 },
6642 "AppResponseData_AdminActSummary": {
6643 "type": "object",
6644 "required": [
6645 "code",
6646 "message",
6647 "request_id",
6648 "log_id"
6649 ],
6650 "properties": {
6651 "code": {
6652 "type": "integer",
6653 "format": "int32"
6654 },
6655 "data": {
6656 "type": "object",
6657 "required": [
6658 "runners_total",
6659 "runners_active",
6660 "runners_busy",
6661 "jobs_queued",
6662 "jobs_running",
6663 "runs_queued",
6664 "runs_running",
6665 "runs_success",
6666 "runs_failure",
6667 "generated_at"
6668 ],
6669 "properties": {
6670 "generated_at": {
6671 "type": "string",
6672 "format": "date-time"
6673 },
6674 "jobs_queued": {
6675 "type": "integer",
6676 "format": "int64",
6677 "minimum": 0
6678 },
6679 "jobs_running": {
6680 "type": "integer",
6681 "format": "int64",
6682 "minimum": 0
6683 },
6684 "runners_active": {
6685 "type": "integer",
6686 "format": "int64",
6687 "minimum": 0
6688 },
6689 "runners_busy": {
6690 "type": "integer",
6691 "format": "int64",
6692 "minimum": 0
6693 },
6694 "runners_total": {
6695 "type": "integer",
6696 "format": "int64",
6697 "minimum": 0
6698 },
6699 "runs_failure": {
6700 "type": "integer",
6701 "format": "int64",
6702 "minimum": 0
6703 },
6704 "runs_queued": {
6705 "type": "integer",
6706 "format": "int64",
6707 "minimum": 0
6708 },
6709 "runs_running": {
6710 "type": "integer",
6711 "format": "int64",
6712 "minimum": 0
6713 },
6714 "runs_success": {
6715 "type": "integer",
6716 "format": "int64",
6717 "minimum": 0
6718 }
6719 }
6720 },
6721 "error": {
6722 "type": [
6723 "string",
6724 "null"
6725 ]
6726 },
6727 "error_code": {
6728 "type": [
6729 "string",
6730 "null"
6731 ]
6732 },
6733 "log_id": {
6734 "type": "string"
6735 },
6736 "message": {
6737 "type": "string"
6738 },
6739 "request_id": {
6740 "type": "string"
6741 }
6742 }
6743 },
6744 "AppResponseData_AdminChatMessageDetail": {
6745 "type": "object",
6746 "required": [
6747 "code",
6748 "message",
6749 "request_id",
6750 "log_id"
6751 ],
6752 "properties": {
6753 "code": {
6754 "type": "integer",
6755 "format": "int32"
6756 },
6757 "data": {
6758 "type": "object",
6759 "required": [
6760 "message",
6761 "edits",
6762 "reactions",
6763 "attachments"
6764 ],
6765 "properties": {
6766 "attachments": {
6767 "type": "array",
6768 "items": {
6769 "$ref": "#/components/schemas/AdminChatAttachmentDto"
6770 }
6771 },
6772 "edits": {
6773 "type": "array",
6774 "items": {
6775 "$ref": "#/components/schemas/AdminChatMessageEditDto"
6776 }
6777 },
6778 "message": {
6779 "$ref": "#/components/schemas/AdminChatMessageDto"
6780 },
6781 "reactions": {
6782 "type": "array",
6783 "items": {
6784 "$ref": "#/components/schemas/AdminChatReactionGroupDto"
6785 }
6786 },
6787 "thread": {
6788 "oneOf": [
6789 {
6790 "type": "null"
6791 },
6792 {
6793 "$ref": "#/components/schemas/AdminChatThreadDto"
6794 }
6795 ]
6796 }
6797 }
6798 },
6799 "error": {
6800 "type": [
6801 "string",
6802 "null"
6803 ]
6804 },
6805 "error_code": {
6806 "type": [
6807 "string",
6808 "null"
6809 ]
6810 },
6811 "log_id": {
6812 "type": "string"
6813 },
6814 "message": {
6815 "type": "string"
6816 },
6817 "request_id": {
6818 "type": "string"
6819 }
6820 }
6821 },
6822 "AppResponseData_AdminChatRoomDetail": {
6823 "type": "object",
6824 "required": [
6825 "code",
6826 "message",
6827 "request_id",
6828 "log_id"
6829 ],
6830 "properties": {
6831 "code": {
6832 "type": "integer",
6833 "format": "int32"
6834 },
6835 "data": {
6836 "type": "object",
6837 "required": [
6838 "room",
6839 "deleted_messages",
6840 "threads",
6841 "attachments",
6842 "attachment_bytes",
6843 "bans",
6844 "invites"
6845 ],
6846 "properties": {
6847 "attachment_bytes": {
6848 "type": "integer",
6849 "format": "int64"
6850 },
6851 "attachments": {
6852 "type": "integer",
6853 "format": "int64"
6854 },
6855 "bans": {
6856 "type": "integer",
6857 "format": "int64"
6858 },
6859 "deleted_messages": {
6860 "type": "integer",
6861 "format": "int64"
6862 },
6863 "invites": {
6864 "type": "integer",
6865 "format": "int64"
6866 },
6867 "room": {
6868 "$ref": "#/components/schemas/AdminChatRoomSummary"
6869 },
6870 "threads": {
6871 "type": "integer",
6872 "format": "int64"
6873 }
6874 }
6875 },
6876 "error": {
6877 "type": [
6878 "string",
6879 "null"
6880 ]
6881 },
6882 "error_code": {
6883 "type": [
6884 "string",
6885 "null"
6886 ]
6887 },
6888 "log_id": {
6889 "type": "string"
6890 },
6891 "message": {
6892 "type": "string"
6893 },
6894 "request_id": {
6895 "type": "string"
6896 }
6897 }
6898 },
6899 "AppResponseData_AdminChatStatsDto": {
6900 "type": "object",
6901 "required": [
6902 "code",
6903 "message",
6904 "request_id",
6905 "log_id"
6906 ],
6907 "properties": {
6908 "code": {
6909 "type": "integer",
6910 "format": "int32"
6911 },
6912 "data": {
6913 "type": "object",
6914 "required": [
6915 "rooms",
6916 "active_rooms",
6917 "private_rooms",
6918 "kinds",
6919 "messages",
6920 "deleted_messages",
6921 "messages_24h",
6922 "threads",
6923 "attachments",
6924 "attachment_bytes",
6925 "pending_attachments",
6926 "members",
6927 "bans"
6928 ],
6929 "properties": {
6930 "active_rooms": {
6931 "type": "integer",
6932 "format": "int64"
6933 },
6934 "attachment_bytes": {
6935 "type": "integer",
6936 "format": "int64"
6937 },
6938 "attachments": {
6939 "type": "integer",
6940 "format": "int64"
6941 },
6942 "bans": {
6943 "type": "integer",
6944 "format": "int64"
6945 },
6946 "deleted_messages": {
6947 "type": "integer",
6948 "format": "int64"
6949 },
6950 "kinds": {
6951 "type": "array",
6952 "items": {
6953 "$ref": "#/components/schemas/AdminChatKindCount"
6954 }
6955 },
6956 "members": {
6957 "type": "integer",
6958 "format": "int64"
6959 },
6960 "messages": {
6961 "type": "integer",
6962 "format": "int64"
6963 },
6964 "messages_24h": {
6965 "type": "integer",
6966 "format": "int64"
6967 },
6968 "pending_attachments": {
6969 "type": "integer",
6970 "format": "int64"
6971 },
6972 "private_rooms": {
6973 "type": "integer",
6974 "format": "int64"
6975 },
6976 "rooms": {
6977 "type": "integer",
6978 "format": "int64"
6979 },
6980 "threads": {
6981 "type": "integer",
6982 "format": "int64"
6983 }
6984 }
6985 },
6986 "error": {
6987 "type": [
6988 "string",
6989 "null"
6990 ]
6991 },
6992 "error_code": {
6993 "type": [
6994 "string",
6995 "null"
6996 ]
6997 },
6998 "log_id": {
6999 "type": "string"
7000 },
7001 "message": {
7002 "type": "string"
7003 },
7004 "request_id": {
7005 "type": "string"
7006 }
7007 }
7008 },
7009 "AppResponseData_AdminDto": {
7010 "type": "object",
7011 "required": [
7012 "code",
7013 "message",
7014 "request_id",
7015 "log_id"
7016 ],
7017 "properties": {
7018 "code": {
7019 "type": "integer",
7020 "format": "int32"
7021 },
7022 "data": {
7023 "type": "object",
7024 "required": [
7025 "id",
7026 "username",
7027 "display_name",
7028 "role",
7029 "is_active",
7030 "must_change_password",
7031 "created_at",
7032 "updated_at"
7033 ],
7034 "properties": {
7035 "created_at": {
7036 "type": "string",
7037 "format": "date-time"
7038 },
7039 "display_name": {
7040 "type": "string"
7041 },
7042 "id": {
7043 "type": "string",
7044 "format": "uuid"
7045 },
7046 "is_active": {
7047 "type": "boolean"
7048 },
7049 "last_login_at": {
7050 "type": [
7051 "string",
7052 "null"
7053 ],
7054 "format": "date-time"
7055 },
7056 "last_login_ip": {
7057 "type": [
7058 "string",
7059 "null"
7060 ]
7061 },
7062 "must_change_password": {
7063 "type": "boolean"
7064 },
7065 "role": {
7066 "$ref": "#/components/schemas/AdminRole"
7067 },
7068 "updated_at": {
7069 "type": "string",
7070 "format": "date-time"
7071 },
7072 "username": {
7073 "type": "string"
7074 }
7075 }
7076 },
7077 "error": {
7078 "type": [
7079 "string",
7080 "null"
7081 ]
7082 },
7083 "error_code": {
7084 "type": [
7085 "string",
7086 "null"
7087 ]
7088 },
7089 "log_id": {
7090 "type": "string"
7091 },
7092 "message": {
7093 "type": "string"
7094 },
7095 "request_id": {
7096 "type": "string"
7097 }
7098 }
7099 },
7100 "AppResponseData_AdminLoginResp": {
7101 "type": "object",
7102 "required": [
7103 "code",
7104 "message",
7105 "request_id",
7106 "log_id"
7107 ],
7108 "properties": {
7109 "code": {
7110 "type": "integer",
7111 "format": "int32"
7112 },
7113 "data": {
7114 "type": "object",
7115 "required": [
7116 "admin",
7117 "must_change_password"
7118 ],
7119 "properties": {
7120 "admin": {
7121 "$ref": "#/components/schemas/AdminDto"
7122 },
7123 "must_change_password": {
7124 "type": "boolean"
7125 }
7126 }
7127 },
7128 "error": {
7129 "type": [
7130 "string",
7131 "null"
7132 ]
7133 },
7134 "error_code": {
7135 "type": [
7136 "string",
7137 "null"
7138 ]
7139 },
7140 "log_id": {
7141 "type": "string"
7142 },
7143 "message": {
7144 "type": "string"
7145 },
7146 "request_id": {
7147 "type": "string"
7148 }
7149 }
7150 },
7151 "AppResponseData_AdminRepoPage": {
7152 "type": "object",
7153 "required": [
7154 "code",
7155 "message",
7156 "request_id",
7157 "log_id"
7158 ],
7159 "properties": {
7160 "code": {
7161 "type": "integer",
7162 "format": "int32"
7163 },
7164 "data": {
7165 "type": "object",
7166 "required": [
7167 "items",
7168 "total",
7169 "limit",
7170 "offset"
7171 ],
7172 "properties": {
7173 "items": {
7174 "type": "array",
7175 "items": {
7176 "$ref": "#/components/schemas/AdminRepoSummary"
7177 }
7178 },
7179 "limit": {
7180 "type": "integer",
7181 "format": "int64",
7182 "minimum": 0
7183 },
7184 "offset": {
7185 "type": "integer",
7186 "format": "int64",
7187 "minimum": 0
7188 },
7189 "total": {
7190 "type": "integer",
7191 "format": "int64",
7192 "minimum": 0
7193 }
7194 }
7195 },
7196 "error": {
7197 "type": [
7198 "string",
7199 "null"
7200 ]
7201 },
7202 "error_code": {
7203 "type": [
7204 "string",
7205 "null"
7206 ]
7207 },
7208 "log_id": {
7209 "type": "string"
7210 },
7211 "message": {
7212 "type": "string"
7213 },
7214 "request_id": {
7215 "type": "string"
7216 }
7217 }
7218 },
7219 "AppResponseData_AdminRepoSummary": {
7220 "type": "object",
7221 "required": [
7222 "code",
7223 "message",
7224 "request_id",
7225 "log_id"
7226 ],
7227 "properties": {
7228 "code": {
7229 "type": "integer",
7230 "format": "int32"
7231 },
7232 "data": {
7233 "type": "object",
7234 "required": [
7235 "id",
7236 "dir_id",
7237 "name",
7238 "lower_name",
7239 "full_name",
7240 "default_branch",
7241 "is_private",
7242 "is_archived",
7243 "enable_lfs",
7244 "size",
7245 "git_size",
7246 "lfs_size",
7247 "nums_commits",
7248 "nums_branches",
7249 "nums_tags",
7250 "created_at",
7251 "updated_at"
7252 ],
7253 "properties": {
7254 "created_at": {
7255 "type": "string",
7256 "format": "date-time"
7257 },
7258 "default_branch": {
7259 "type": "string"
7260 },
7261 "description": {
7262 "type": [
7263 "string",
7264 "null"
7265 ]
7266 },
7267 "dir_id": {
7268 "type": "string",
7269 "format": "uuid"
7270 },
7271 "enable_lfs": {
7272 "type": "boolean"
7273 },
7274 "full_name": {
7275 "type": "string"
7276 },
7277 "git_size": {
7278 "type": "integer",
7279 "format": "int64"
7280 },
7281 "id": {
7282 "type": "string",
7283 "format": "uuid"
7284 },
7285 "is_archived": {
7286 "type": "boolean"
7287 },
7288 "is_private": {
7289 "type": "boolean"
7290 },
7291 "last_pushed_at": {
7292 "type": [
7293 "string",
7294 "null"
7295 ],
7296 "format": "date-time"
7297 },
7298 "lfs_size": {
7299 "type": "integer",
7300 "format": "int64"
7301 },
7302 "lower_name": {
7303 "type": "string"
7304 },
7305 "name": {
7306 "type": "string"
7307 },
7308 "nums_branches": {
7309 "type": "integer",
7310 "format": "int32"
7311 },
7312 "nums_commits": {
7313 "type": "integer",
7314 "format": "int32"
7315 },
7316 "nums_tags": {
7317 "type": "integer",
7318 "format": "int32"
7319 },
7320 "primary_language": {
7321 "type": [
7322 "string",
7323 "null"
7324 ]
7325 },
7326 "size": {
7327 "type": "integer",
7328 "format": "int64"
7329 },
7330 "space_id": {
7331 "type": [
7332 "string",
7333 "null"
7334 ],
7335 "format": "uuid"
7336 },
7337 "space_lower_name": {
7338 "type": [
7339 "string",
7340 "null"
7341 ]
7342 },
7343 "space_name": {
7344 "type": [
7345 "string",
7346 "null"
7347 ]
7348 },
7349 "storage_limit_size": {
7350 "type": [
7351 "integer",
7352 "null"
7353 ],
7354 "format": "int64"
7355 },
7356 "updated_at": {
7357 "type": "string",
7358 "format": "date-time"
7359 }
7360 }
7361 },
7362 "error": {
7363 "type": [
7364 "string",
7365 "null"
7366 ]
7367 },
7368 "error_code": {
7369 "type": [
7370 "string",
7371 "null"
7372 ]
7373 },
7374 "log_id": {
7375 "type": "string"
7376 },
7377 "message": {
7378 "type": "string"
7379 },
7380 "request_id": {
7381 "type": "string"
7382 }
7383 }
7384 },
7385 "AppResponseData_AdminSpaceDetail": {
7386 "type": "object",
7387 "required": [
7388 "code",
7389 "message",
7390 "request_id",
7391 "log_id"
7392 ],
7393 "properties": {
7394 "code": {
7395 "type": "integer",
7396 "format": "int32"
7397 },
7398 "data": {
7399 "type": "object",
7400 "required": [
7401 "space",
7402 "repos_count",
7403 "repos_size",
7404 "rooms_count",
7405 "dirs_count"
7406 ],
7407 "properties": {
7408 "dirs_count": {
7409 "type": "integer",
7410 "format": "int64"
7411 },
7412 "repos_count": {
7413 "type": "integer",
7414 "format": "int64"
7415 },
7416 "repos_size": {
7417 "type": "integer",
7418 "format": "int64"
7419 },
7420 "rooms_count": {
7421 "type": "integer",
7422 "format": "int64"
7423 },
7424 "space": {
7425 "$ref": "#/components/schemas/AdminSpaceSummary"
7426 }
7427 }
7428 },
7429 "error": {
7430 "type": [
7431 "string",
7432 "null"
7433 ]
7434 },
7435 "error_code": {
7436 "type": [
7437 "string",
7438 "null"
7439 ]
7440 },
7441 "log_id": {
7442 "type": "string"
7443 },
7444 "message": {
7445 "type": "string"
7446 },
7447 "request_id": {
7448 "type": "string"
7449 }
7450 }
7451 },
7452 "AppResponseData_AdminSuspensionDto": {
7453 "type": "object",
7454 "required": [
7455 "code",
7456 "message",
7457 "request_id",
7458 "log_id"
7459 ],
7460 "properties": {
7461 "code": {
7462 "type": "integer",
7463 "format": "int32"
7464 },
7465 "data": {
7466 "type": "object",
7467 "required": [
7468 "id",
7469 "suspension_type",
7470 "starts_at"
7471 ],
7472 "properties": {
7473 "ends_at": {
7474 "type": [
7475 "string",
7476 "null"
7477 ],
7478 "format": "date-time"
7479 },
7480 "id": {
7481 "type": "string",
7482 "format": "uuid"
7483 },
7484 "reason": {
7485 "type": [
7486 "string",
7487 "null"
7488 ]
7489 },
7490 "revoked_at": {
7491 "type": [
7492 "string",
7493 "null"
7494 ],
7495 "format": "date-time"
7496 },
7497 "starts_at": {
7498 "type": "string",
7499 "format": "date-time"
7500 },
7501 "suspended_by": {
7502 "type": [
7503 "string",
7504 "null"
7505 ],
7506 "format": "uuid"
7507 },
7508 "suspension_type": {
7509 "type": "string"
7510 }
7511 }
7512 },
7513 "error": {
7514 "type": [
7515 "string",
7516 "null"
7517 ]
7518 },
7519 "error_code": {
7520 "type": [
7521 "string",
7522 "null"
7523 ]
7524 },
7525 "log_id": {
7526 "type": "string"
7527 },
7528 "message": {
7529 "type": "string"
7530 },
7531 "request_id": {
7532 "type": "string"
7533 }
7534 }
7535 },
7536 "AppResponseData_AdminUserDetail": {
7537 "type": "object",
7538 "required": [
7539 "code",
7540 "message",
7541 "request_id",
7542 "log_id"
7543 ],
7544 "properties": {
7545 "code": {
7546 "type": "integer",
7547 "format": "int32"
7548 },
7549 "data": {
7550 "type": "object",
7551 "required": [
7552 "user",
7553 "emails",
7554 "sessions",
7555 "spaces",
7556 "suspensions"
7557 ],
7558 "properties": {
7559 "emails": {
7560 "type": "array",
7561 "items": {
7562 "$ref": "#/components/schemas/AdminUserEmailDto"
7563 }
7564 },
7565 "sessions": {
7566 "type": "array",
7567 "items": {
7568 "$ref": "#/components/schemas/AdminUserSessionDto"
7569 }
7570 },
7571 "spaces": {
7572 "type": "array",
7573 "items": {
7574 "$ref": "#/components/schemas/AdminUserSpaceDto"
7575 }
7576 },
7577 "suspensions": {
7578 "type": "array",
7579 "items": {
7580 "$ref": "#/components/schemas/AdminSuspensionDto"
7581 }
7582 },
7583 "user": {
7584 "$ref": "#/components/schemas/AdminUserSummary"
7585 }
7586 }
7587 },
7588 "error": {
7589 "type": [
7590 "string",
7591 "null"
7592 ]
7593 },
7594 "error_code": {
7595 "type": [
7596 "string",
7597 "null"
7598 ]
7599 },
7600 "log_id": {
7601 "type": "string"
7602 },
7603 "message": {
7604 "type": "string"
7605 },
7606 "request_id": {
7607 "type": "string"
7608 }
7609 }
7610 },
7611 "AppResponseData_AdminUserSecurityDto": {
7612 "type": "object",
7613 "required": [
7614 "code",
7615 "message",
7616 "request_id",
7617 "log_id"
7618 ],
7619 "properties": {
7620 "code": {
7621 "type": "integer",
7622 "format": "int32"
7623 },
7624 "data": {
7625 "type": "object",
7626 "required": [
7627 "totp_enabled",
7628 "recovery_codes_total",
7629 "recovery_codes_used",
7630 "active_sessions",
7631 "ssh_keys",
7632 "access_keys",
7633 "passwd_version"
7634 ],
7635 "properties": {
7636 "access_keys": {
7637 "type": "integer",
7638 "format": "int64"
7639 },
7640 "active_sessions": {
7641 "type": "integer",
7642 "format": "int64"
7643 },
7644 "passwd_version": {
7645 "type": "integer",
7646 "format": "int64"
7647 },
7648 "password_last_changed_at": {
7649 "type": [
7650 "string",
7651 "null"
7652 ],
7653 "format": "date-time"
7654 },
7655 "recovery_codes_total": {
7656 "type": "integer",
7657 "format": "int64"
7658 },
7659 "recovery_codes_used": {
7660 "type": "integer",
7661 "format": "int64"
7662 },
7663 "ssh_keys": {
7664 "type": "integer",
7665 "format": "int64"
7666 },
7667 "totp_enabled": {
7668 "type": "boolean"
7669 }
7670 }
7671 },
7672 "error": {
7673 "type": [
7674 "string",
7675 "null"
7676 ]
7677 },
7678 "error_code": {
7679 "type": [
7680 "string",
7681 "null"
7682 ]
7683 },
7684 "log_id": {
7685 "type": "string"
7686 },
7687 "message": {
7688 "type": "string"
7689 },
7690 "request_id": {
7691 "type": "string"
7692 }
7693 }
7694 },
7695 "AppResponseData_AdminUserSessionPage": {
7696 "type": "object",
7697 "required": [
7698 "code",
7699 "message",
7700 "request_id",
7701 "log_id"
7702 ],
7703 "properties": {
7704 "code": {
7705 "type": "integer",
7706 "format": "int32"
7707 },
7708 "data": {
7709 "type": "object",
7710 "required": [
7711 "items",
7712 "total",
7713 "limit",
7714 "offset"
7715 ],
7716 "properties": {
7717 "items": {
7718 "type": "array",
7719 "items": {
7720 "$ref": "#/components/schemas/AdminUserSessionRow"
7721 }
7722 },
7723 "limit": {
7724 "type": "integer",
7725 "format": "int64",
7726 "minimum": 0
7727 },
7728 "offset": {
7729 "type": "integer",
7730 "format": "int64",
7731 "minimum": 0
7732 },
7733 "total": {
7734 "type": "integer",
7735 "format": "int64"
7736 }
7737 }
7738 },
7739 "error": {
7740 "type": [
7741 "string",
7742 "null"
7743 ]
7744 },
7745 "error_code": {
7746 "type": [
7747 "string",
7748 "null"
7749 ]
7750 },
7751 "log_id": {
7752 "type": "string"
7753 },
7754 "message": {
7755 "type": "string"
7756 },
7757 "request_id": {
7758 "type": "string"
7759 }
7760 }
7761 },
7762 "AppResponseData_AdminUserSummary": {
7763 "type": "object",
7764 "required": [
7765 "code",
7766 "message",
7767 "request_id",
7768 "log_id"
7769 ],
7770 "properties": {
7771 "code": {
7772 "type": "integer",
7773 "format": "int32"
7774 },
7775 "data": {
7776 "type": "object",
7777 "required": [
7778 "uid",
7779 "username",
7780 "display_name",
7781 "avatar_url",
7782 "is_active",
7783 "is_restricted",
7784 "prohibit_login",
7785 "bot",
7786 "system",
7787 "suspended",
7788 "created_at"
7789 ],
7790 "properties": {
7791 "avatar_url": {
7792 "type": "string"
7793 },
7794 "bot": {
7795 "type": "boolean"
7796 },
7797 "created_at": {
7798 "type": "string",
7799 "format": "date-time"
7800 },
7801 "display_name": {
7802 "type": "string"
7803 },
7804 "is_active": {
7805 "type": "boolean"
7806 },
7807 "is_restricted": {
7808 "type": "boolean"
7809 },
7810 "last_login_at": {
7811 "type": [
7812 "string",
7813 "null"
7814 ],
7815 "format": "date-time"
7816 },
7817 "prohibit_login": {
7818 "type": "boolean"
7819 },
7820 "suspended": {
7821 "type": "boolean"
7822 },
7823 "system": {
7824 "type": "boolean"
7825 },
7826 "uid": {
7827 "type": "string",
7828 "format": "uuid"
7829 },
7830 "username": {
7831 "type": "string"
7832 }
7833 }
7834 },
7835 "error": {
7836 "type": [
7837 "string",
7838 "null"
7839 ]
7840 },
7841 "error_code": {
7842 "type": [
7843 "string",
7844 "null"
7845 ]
7846 },
7847 "log_id": {
7848 "type": "string"
7849 },
7850 "message": {
7851 "type": "string"
7852 },
7853 "request_id": {
7854 "type": "string"
7855 }
7856 }
7857 },
7858 "AppResponseData_AuditLogPageDto": {
7859 "type": "object",
7860 "required": [
7861 "code",
7862 "message",
7863 "request_id",
7864 "log_id"
7865 ],
7866 "properties": {
7867 "code": {
7868 "type": "integer",
7869 "format": "int32"
7870 },
7871 "data": {
7872 "type": "object",
7873 "required": [
7874 "items",
7875 "total",
7876 "limit",
7877 "offset"
7878 ],
7879 "properties": {
7880 "items": {
7881 "type": "array",
7882 "items": {
7883 "$ref": "#/components/schemas/AuditLogDto"
7884 }
7885 },
7886 "limit": {
7887 "type": "integer",
7888 "format": "int64",
7889 "minimum": 0
7890 },
7891 "offset": {
7892 "type": "integer",
7893 "format": "int64",
7894 "minimum": 0
7895 },
7896 "total": {
7897 "type": "integer",
7898 "format": "int64"
7899 }
7900 }
7901 },
7902 "error": {
7903 "type": [
7904 "string",
7905 "null"
7906 ]
7907 },
7908 "error_code": {
7909 "type": [
7910 "string",
7911 "null"
7912 ]
7913 },
7914 "log_id": {
7915 "type": "string"
7916 },
7917 "message": {
7918 "type": "string"
7919 },
7920 "request_id": {
7921 "type": "string"
7922 }
7923 }
7924 },
7925 "AppResponseData_BulkDeleteChatMessagesResp": {
7926 "type": "object",
7927 "required": [
7928 "code",
7929 "message",
7930 "request_id",
7931 "log_id"
7932 ],
7933 "properties": {
7934 "code": {
7935 "type": "integer",
7936 "format": "int32"
7937 },
7938 "data": {
7939 "type": "object",
7940 "required": [
7941 "succeeded",
7942 "failed"
7943 ],
7944 "properties": {
7945 "failed": {
7946 "type": "array",
7947 "items": {
7948 "$ref": "#/components/schemas/BulkChatMessageFailure"
7949 }
7950 },
7951 "succeeded": {
7952 "type": "array",
7953 "items": {
7954 "type": "string",
7955 "format": "uuid"
7956 }
7957 }
7958 }
7959 },
7960 "error": {
7961 "type": [
7962 "string",
7963 "null"
7964 ]
7965 },
7966 "error_code": {
7967 "type": [
7968 "string",
7969 "null"
7970 ]
7971 },
7972 "log_id": {
7973 "type": "string"
7974 },
7975 "message": {
7976 "type": "string"
7977 },
7978 "request_id": {
7979 "type": "string"
7980 }
7981 }
7982 },
7983 "AppResponseData_BulkTaskResp": {
7984 "type": "object",
7985 "required": [
7986 "code",
7987 "message",
7988 "request_id",
7989 "log_id"
7990 ],
7991 "properties": {
7992 "code": {
7993 "type": "integer",
7994 "format": "int32"
7995 },
7996 "data": {
7997 "type": "object",
7998 "required": [
7999 "source",
8000 "action",
8001 "succeeded",
8002 "failed"
8003 ],
8004 "properties": {
8005 "action": {
8006 "type": "string"
8007 },
8008 "failed": {
8009 "type": "array",
8010 "items": {
8011 "$ref": "#/components/schemas/BulkTaskFailure"
8012 }
8013 },
8014 "source": {
8015 "type": "string"
8016 },
8017 "succeeded": {
8018 "type": "array",
8019 "items": {
8020 "type": "string",
8021 "format": "uuid"
8022 }
8023 }
8024 }
8025 },
8026 "error": {
8027 "type": [
8028 "string",
8029 "null"
8030 ]
8031 },
8032 "error_code": {
8033 "type": [
8034 "string",
8035 "null"
8036 ]
8037 },
8038 "log_id": {
8039 "type": "string"
8040 },
8041 "message": {
8042 "type": "string"
8043 },
8044 "request_id": {
8045 "type": "string"
8046 }
8047 }
8048 },
8049 "AppResponseData_BulkUsersResp": {
8050 "type": "object",
8051 "required": [
8052 "code",
8053 "message",
8054 "request_id",
8055 "log_id"
8056 ],
8057 "properties": {
8058 "code": {
8059 "type": "integer",
8060 "format": "int32"
8061 },
8062 "data": {
8063 "type": "object",
8064 "required": [
8065 "action",
8066 "succeeded",
8067 "failed"
8068 ],
8069 "properties": {
8070 "action": {
8071 "type": "string"
8072 },
8073 "failed": {
8074 "type": "array",
8075 "items": {
8076 "$ref": "#/components/schemas/BulkUserFailure"
8077 }
8078 },
8079 "succeeded": {
8080 "type": "array",
8081 "items": {
8082 "type": "string",
8083 "format": "uuid"
8084 }
8085 }
8086 }
8087 },
8088 "error": {
8089 "type": [
8090 "string",
8091 "null"
8092 ]
8093 },
8094 "error_code": {
8095 "type": [
8096 "string",
8097 "null"
8098 ]
8099 },
8100 "log_id": {
8101 "type": "string"
8102 },
8103 "message": {
8104 "type": "string"
8105 },
8106 "request_id": {
8107 "type": "string"
8108 }
8109 }
8110 },
8111 "AppResponseData_CreateUserResp": {
8112 "type": "object",
8113 "required": [
8114 "code",
8115 "message",
8116 "request_id",
8117 "log_id"
8118 ],
8119 "properties": {
8120 "code": {
8121 "type": "integer",
8122 "format": "int32"
8123 },
8124 "data": {
8125 "type": "object",
8126 "required": [
8127 "uid",
8128 "username",
8129 "email"
8130 ],
8131 "properties": {
8132 "email": {
8133 "type": "string"
8134 },
8135 "uid": {
8136 "type": "string",
8137 "format": "uuid"
8138 },
8139 "username": {
8140 "type": "string"
8141 }
8142 }
8143 },
8144 "error": {
8145 "type": [
8146 "string",
8147 "null"
8148 ]
8149 },
8150 "error_code": {
8151 "type": [
8152 "string",
8153 "null"
8154 ]
8155 },
8156 "log_id": {
8157 "type": "string"
8158 },
8159 "message": {
8160 "type": "string"
8161 },
8162 "request_id": {
8163 "type": "string"
8164 }
8165 }
8166 },
8167 "AppResponseData_CreatedRunnerTokenDto": {
8168 "type": "object",
8169 "required": [
8170 "code",
8171 "message",
8172 "request_id",
8173 "log_id"
8174 ],
8175 "properties": {
8176 "code": {
8177 "type": "integer",
8178 "format": "int32"
8179 },
8180 "data": {
8181 "type": "object",
8182 "required": [
8183 "token",
8184 "plaintext"
8185 ],
8186 "properties": {
8187 "plaintext": {
8188 "type": "string"
8189 },
8190 "token": {
8191 "$ref": "#/components/schemas/RunnerTokenDto"
8192 }
8193 }
8194 },
8195 "error": {
8196 "type": [
8197 "string",
8198 "null"
8199 ]
8200 },
8201 "error_code": {
8202 "type": [
8203 "string",
8204 "null"
8205 ]
8206 },
8207 "log_id": {
8208 "type": "string"
8209 },
8210 "message": {
8211 "type": "string"
8212 },
8213 "request_id": {
8214 "type": "string"
8215 }
8216 }
8217 },
8218 "AppResponseData_DashboardDto": {
8219 "type": "object",
8220 "required": [
8221 "code",
8222 "message",
8223 "request_id",
8224 "log_id"
8225 ],
8226 "properties": {
8227 "code": {
8228 "type": "integer",
8229 "format": "int32"
8230 },
8231 "data": {
8232 "type": "object",
8233 "required": [
8234 "counts",
8235 "trend",
8236 "active_sessions",
8237 "restricted_users",
8238 "recent_audit",
8239 "recent_failures",
8240 "queues",
8241 "generated_at"
8242 ],
8243 "properties": {
8244 "active_sessions": {
8245 "type": "integer",
8246 "format": "int64"
8247 },
8248 "counts": {
8249 "$ref": "#/components/schemas/CountsDto"
8250 },
8251 "generated_at": {
8252 "type": "string",
8253 "format": "date-time"
8254 },
8255 "queues": {
8256 "type": "array",
8257 "items": {
8258 "$ref": "#/components/schemas/QueueSnapshotDto"
8259 }
8260 },
8261 "recent_audit": {
8262 "type": "array",
8263 "items": {
8264 "$ref": "#/components/schemas/AuditLogDto"
8265 }
8266 },
8267 "recent_failures": {
8268 "type": "array",
8269 "items": {
8270 "$ref": "#/components/schemas/JobLogDto"
8271 }
8272 },
8273 "restricted_users": {
8274 "type": "integer",
8275 "format": "int64"
8276 },
8277 "trend": {
8278 "type": "array",
8279 "items": {
8280 "$ref": "#/components/schemas/TrendPointDto"
8281 }
8282 }
8283 }
8284 },
8285 "error": {
8286 "type": [
8287 "string",
8288 "null"
8289 ]
8290 },
8291 "error_code": {
8292 "type": [
8293 "string",
8294 "null"
8295 ]
8296 },
8297 "log_id": {
8298 "type": "string"
8299 },
8300 "message": {
8301 "type": "string"
8302 },
8303 "request_id": {
8304 "type": "string"
8305 }
8306 }
8307 },
8308 "AppResponseData_DeleteChatAttachmentResp": {
8309 "type": "object",
8310 "required": [
8311 "code",
8312 "message",
8313 "request_id",
8314 "log_id"
8315 ],
8316 "properties": {
8317 "code": {
8318 "type": "integer",
8319 "format": "int32"
8320 },
8321 "data": {
8322 "type": "object",
8323 "required": [
8324 "id",
8325 "s3_key",
8326 "deleted",
8327 "storage_deleted"
8328 ],
8329 "properties": {
8330 "deleted": {
8331 "type": "boolean"
8332 },
8333 "id": {
8334 "type": "string",
8335 "format": "uuid"
8336 },
8337 "s3_key": {
8338 "type": "string"
8339 },
8340 "storage_deleted": {
8341 "type": "boolean"
8342 }
8343 }
8344 },
8345 "error": {
8346 "type": [
8347 "string",
8348 "null"
8349 ]
8350 },
8351 "error_code": {
8352 "type": [
8353 "string",
8354 "null"
8355 ]
8356 },
8357 "log_id": {
8358 "type": "string"
8359 },
8360 "message": {
8361 "type": "string"
8362 },
8363 "request_id": {
8364 "type": "string"
8365 }
8366 }
8367 },
8368 "AppResponseData_DeleteChatRoomResp": {
8369 "type": "object",
8370 "required": [
8371 "code",
8372 "message",
8373 "request_id",
8374 "log_id"
8375 ],
8376 "properties": {
8377 "code": {
8378 "type": "integer",
8379 "format": "int32"
8380 },
8381 "data": {
8382 "type": "object",
8383 "required": [
8384 "room_id",
8385 "messages_deleted",
8386 "members_deleted",
8387 "attachments_deleted",
8388 "threads_deleted"
8389 ],
8390 "properties": {
8391 "attachments_deleted": {
8392 "type": "integer",
8393 "format": "int64",
8394 "minimum": 0
8395 },
8396 "members_deleted": {
8397 "type": "integer",
8398 "format": "int64",
8399 "minimum": 0
8400 },
8401 "messages_deleted": {
8402 "type": "integer",
8403 "format": "int64",
8404 "minimum": 0
8405 },
8406 "room_id": {
8407 "type": "string",
8408 "format": "uuid"
8409 },
8410 "threads_deleted": {
8411 "type": "integer",
8412 "format": "int64",
8413 "minimum": 0
8414 }
8415 }
8416 },
8417 "error": {
8418 "type": [
8419 "string",
8420 "null"
8421 ]
8422 },
8423 "error_code": {
8424 "type": [
8425 "string",
8426 "null"
8427 ]
8428 },
8429 "log_id": {
8430 "type": "string"
8431 },
8432 "message": {
8433 "type": "string"
8434 },
8435 "request_id": {
8436 "type": "string"
8437 }
8438 }
8439 },
8440 "AppResponseData_DeleteObjectResp": {
8441 "type": "object",
8442 "required": [
8443 "code",
8444 "message",
8445 "request_id",
8446 "log_id"
8447 ],
8448 "properties": {
8449 "code": {
8450 "type": "integer",
8451 "format": "int32"
8452 },
8453 "data": {
8454 "type": "object",
8455 "required": [
8456 "key",
8457 "deleted"
8458 ],
8459 "properties": {
8460 "deleted": {
8461 "type": "boolean"
8462 },
8463 "key": {
8464 "type": "string"
8465 }
8466 }
8467 },
8468 "error": {
8469 "type": [
8470 "string",
8471 "null"
8472 ]
8473 },
8474 "error_code": {
8475 "type": [
8476 "string",
8477 "null"
8478 ]
8479 },
8480 "log_id": {
8481 "type": "string"
8482 },
8483 "message": {
8484 "type": "string"
8485 },
8486 "request_id": {
8487 "type": "string"
8488 }
8489 }
8490 },
8491 "AppResponseData_DeleteUserResp": {
8492 "type": "object",
8493 "required": [
8494 "code",
8495 "message",
8496 "request_id",
8497 "log_id"
8498 ],
8499 "properties": {
8500 "code": {
8501 "type": "integer",
8502 "format": "int32"
8503 },
8504 "data": {
8505 "type": "object",
8506 "required": [
8507 "user_id",
8508 "anonymized"
8509 ],
8510 "properties": {
8511 "anonymized": {
8512 "type": "boolean"
8513 },
8514 "user_id": {
8515 "type": "string",
8516 "format": "uuid"
8517 }
8518 }
8519 },
8520 "error": {
8521 "type": [
8522 "string",
8523 "null"
8524 ]
8525 },
8526 "error_code": {
8527 "type": [
8528 "string",
8529 "null"
8530 ]
8531 },
8532 "log_id": {
8533 "type": "string"
8534 },
8535 "message": {
8536 "type": "string"
8537 },
8538 "request_id": {
8539 "type": "string"
8540 }
8541 }
8542 },
8543 "AppResponseData_DownloadUrlDto": {
8544 "type": "object",
8545 "required": [
8546 "code",
8547 "message",
8548 "request_id",
8549 "log_id"
8550 ],
8551 "properties": {
8552 "code": {
8553 "type": "integer",
8554 "format": "int32"
8555 },
8556 "data": {
8557 "type": "object",
8558 "required": [
8559 "key",
8560 "url",
8561 "expires_in_secs"
8562 ],
8563 "properties": {
8564 "expires_in_secs": {
8565 "type": "integer",
8566 "format": "int32",
8567 "minimum": 0
8568 },
8569 "key": {
8570 "type": "string"
8571 },
8572 "url": {
8573 "type": "string"
8574 }
8575 }
8576 },
8577 "error": {
8578 "type": [
8579 "string",
8580 "null"
8581 ]
8582 },
8583 "error_code": {
8584 "type": [
8585 "string",
8586 "null"
8587 ]
8588 },
8589 "log_id": {
8590 "type": "string"
8591 },
8592 "message": {
8593 "type": "string"
8594 },
8595 "request_id": {
8596 "type": "string"
8597 }
8598 }
8599 },
8600 "AppResponseData_EnvironmentAdminDto": {
8601 "type": "object",
8602 "required": [
8603 "code",
8604 "message",
8605 "request_id",
8606 "log_id"
8607 ],
8608 "properties": {
8609 "code": {
8610 "type": "integer",
8611 "format": "int32"
8612 },
8613 "data": {
8614 "type": "object",
8615 "required": [
8616 "id",
8617 "space_id",
8618 "name",
8619 "required_labels",
8620 "secrets",
8621 "created_at",
8622 "updated_at"
8623 ],
8624 "properties": {
8625 "created_at": {
8626 "type": "string",
8627 "format": "date-time"
8628 },
8629 "description": {
8630 "type": [
8631 "string",
8632 "null"
8633 ]
8634 },
8635 "id": {
8636 "type": "string",
8637 "format": "uuid"
8638 },
8639 "name": {
8640 "type": "string"
8641 },
8642 "required_labels": {
8643 "type": "array",
8644 "items": {
8645 "type": "string"
8646 }
8647 },
8648 "secrets": {
8649 "type": "array",
8650 "items": {
8651 "type": "string"
8652 }
8653 },
8654 "space_id": {
8655 "type": "string",
8656 "format": "uuid"
8657 },
8658 "updated_at": {
8659 "type": "string",
8660 "format": "date-time"
8661 }
8662 }
8663 },
8664 "error": {
8665 "type": [
8666 "string",
8667 "null"
8668 ]
8669 },
8670 "error_code": {
8671 "type": [
8672 "string",
8673 "null"
8674 ]
8675 },
8676 "log_id": {
8677 "type": "string"
8678 },
8679 "message": {
8680 "type": "string"
8681 },
8682 "request_id": {
8683 "type": "string"
8684 }
8685 }
8686 },
8687 "AppResponseData_JobLogPageDto": {
8688 "type": "object",
8689 "required": [
8690 "code",
8691 "message",
8692 "request_id",
8693 "log_id"
8694 ],
8695 "properties": {
8696 "code": {
8697 "type": "integer",
8698 "format": "int32"
8699 },
8700 "data": {
8701 "type": "object",
8702 "required": [
8703 "items",
8704 "total",
8705 "limit",
8706 "offset"
8707 ],
8708 "properties": {
8709 "items": {
8710 "type": "array",
8711 "items": {
8712 "$ref": "#/components/schemas/JobLogDto"
8713 }
8714 },
8715 "limit": {
8716 "type": "integer",
8717 "format": "int64",
8718 "minimum": 0
8719 },
8720 "offset": {
8721 "type": "integer",
8722 "format": "int64",
8723 "minimum": 0
8724 },
8725 "total": {
8726 "type": "integer",
8727 "format": "int64"
8728 }
8729 }
8730 },
8731 "error": {
8732 "type": [
8733 "string",
8734 "null"
8735 ]
8736 },
8737 "error_code": {
8738 "type": [
8739 "string",
8740 "null"
8741 ]
8742 },
8743 "log_id": {
8744 "type": "string"
8745 },
8746 "message": {
8747 "type": "string"
8748 },
8749 "request_id": {
8750 "type": "string"
8751 }
8752 }
8753 },
8754 "AppResponseData_NoData": {
8755 "type": "object",
8756 "required": [
8757 "code",
8758 "message",
8759 "request_id",
8760 "log_id"
8761 ],
8762 "properties": {
8763 "code": {
8764 "type": "integer",
8765 "format": "int32"
8766 },
8767 "data": {
8768 "default": null
8769 },
8770 "error": {
8771 "type": [
8772 "string",
8773 "null"
8774 ]
8775 },
8776 "error_code": {
8777 "type": [
8778 "string",
8779 "null"
8780 ]
8781 },
8782 "log_id": {
8783 "type": "string"
8784 },
8785 "message": {
8786 "type": "string"
8787 },
8788 "request_id": {
8789 "type": "string"
8790 }
8791 }
8792 },
8793 "AppResponseData_Page_AdminChatAttachmentDto": {
8794 "type": "object",
8795 "required": [
8796 "code",
8797 "message",
8798 "request_id",
8799 "log_id"
8800 ],
8801 "properties": {
8802 "code": {
8803 "type": "integer",
8804 "format": "int32"
8805 },
8806 "data": {
8807 "type": "object",
8808 "required": [
8809 "items",
8810 "total",
8811 "limit",
8812 "offset"
8813 ],
8814 "properties": {
8815 "items": {
8816 "type": "array",
8817 "items": {
8818 "type": "object",
8819 "required": [
8820 "id",
8821 "user_id",
8822 "filename",
8823 "content_type",
8824 "size",
8825 "bucket",
8826 "s3_key",
8827 "status",
8828 "created_at"
8829 ],
8830 "properties": {
8831 "bucket": {
8832 "type": "string"
8833 },
8834 "content_type": {
8835 "type": "string"
8836 },
8837 "created_at": {
8838 "type": "string",
8839 "format": "date-time"
8840 },
8841 "description": {
8842 "type": [
8843 "string",
8844 "null"
8845 ]
8846 },
8847 "display_name": {
8848 "type": [
8849 "string",
8850 "null"
8851 ]
8852 },
8853 "filename": {
8854 "type": "string"
8855 },
8856 "id": {
8857 "type": "string",
8858 "format": "uuid"
8859 },
8860 "message_id": {
8861 "type": [
8862 "string",
8863 "null"
8864 ],
8865 "format": "uuid"
8866 },
8867 "room_id": {
8868 "type": [
8869 "string",
8870 "null"
8871 ],
8872 "format": "uuid"
8873 },
8874 "s3_key": {
8875 "type": "string"
8876 },
8877 "size": {
8878 "type": "integer",
8879 "format": "int64"
8880 },
8881 "status": {
8882 "type": "string"
8883 },
8884 "user_id": {
8885 "type": "string",
8886 "format": "uuid"
8887 },
8888 "username": {
8889 "type": [
8890 "string",
8891 "null"
8892 ]
8893 }
8894 }
8895 }
8896 },
8897 "limit": {
8898 "type": "integer",
8899 "format": "int64",
8900 "minimum": 0
8901 },
8902 "offset": {
8903 "type": "integer",
8904 "format": "int64",
8905 "minimum": 0
8906 },
8907 "total": {
8908 "type": "integer",
8909 "format": "int64"
8910 }
8911 }
8912 },
8913 "error": {
8914 "type": [
8915 "string",
8916 "null"
8917 ]
8918 },
8919 "error_code": {
8920 "type": [
8921 "string",
8922 "null"
8923 ]
8924 },
8925 "log_id": {
8926 "type": "string"
8927 },
8928 "message": {
8929 "type": "string"
8930 },
8931 "request_id": {
8932 "type": "string"
8933 }
8934 }
8935 },
8936 "AppResponseData_Page_AdminChatMessageDto": {
8937 "type": "object",
8938 "required": [
8939 "code",
8940 "message",
8941 "request_id",
8942 "log_id"
8943 ],
8944 "properties": {
8945 "code": {
8946 "type": "integer",
8947 "format": "int32"
8948 },
8949 "data": {
8950 "type": "object",
8951 "required": [
8952 "items",
8953 "total",
8954 "limit",
8955 "offset"
8956 ],
8957 "properties": {
8958 "items": {
8959 "type": "array",
8960 "items": {
8961 "type": "object",
8962 "required": [
8963 "id",
8964 "room_id",
8965 "author_id",
8966 "author_type",
8967 "message_type",
8968 "content",
8969 "seq",
8970 "flags",
8971 "pinned",
8972 "attachment_count",
8973 "reaction_count",
8974 "created_at"
8975 ],
8976 "properties": {
8977 "attachment_count": {
8978 "type": "integer",
8979 "format": "int64"
8980 },
8981 "author_display_name": {
8982 "type": [
8983 "string",
8984 "null"
8985 ]
8986 },
8987 "author_id": {
8988 "type": "string",
8989 "format": "uuid"
8990 },
8991 "author_type": {
8992 "type": "string"
8993 },
8994 "author_username": {
8995 "type": [
8996 "string",
8997 "null"
8998 ]
8999 },
9000 "content": {
9001 "type": "string"
9002 },
9003 "created_at": {
9004 "type": "string",
9005 "format": "date-time"
9006 },
9007 "deleted_at": {
9008 "type": [
9009 "string",
9010 "null"
9011 ],
9012 "format": "date-time"
9013 },
9014 "edited_at": {
9015 "type": [
9016 "string",
9017 "null"
9018 ],
9019 "format": "date-time"
9020 },
9021 "flags": {
9022 "type": "integer",
9023 "format": "int64"
9024 },
9025 "id": {
9026 "type": "string",
9027 "format": "uuid"
9028 },
9029 "message_type": {
9030 "type": "string"
9031 },
9032 "pinned": {
9033 "type": "boolean"
9034 },
9035 "reaction_count": {
9036 "type": "integer",
9037 "format": "int64"
9038 },
9039 "reply_to_id": {
9040 "type": [
9041 "string",
9042 "null"
9043 ],
9044 "format": "uuid"
9045 },
9046 "room_id": {
9047 "type": "string",
9048 "format": "uuid"
9049 },
9050 "room_name": {
9051 "type": [
9052 "string",
9053 "null"
9054 ]
9055 },
9056 "seq": {
9057 "type": "integer",
9058 "format": "int64"
9059 },
9060 "thread_id": {
9061 "type": [
9062 "string",
9063 "null"
9064 ],
9065 "format": "uuid"
9066 }
9067 }
9068 }
9069 },
9070 "limit": {
9071 "type": "integer",
9072 "format": "int64",
9073 "minimum": 0
9074 },
9075 "offset": {
9076 "type": "integer",
9077 "format": "int64",
9078 "minimum": 0
9079 },
9080 "total": {
9081 "type": "integer",
9082 "format": "int64"
9083 }
9084 }
9085 },
9086 "error": {
9087 "type": [
9088 "string",
9089 "null"
9090 ]
9091 },
9092 "error_code": {
9093 "type": [
9094 "string",
9095 "null"
9096 ]
9097 },
9098 "log_id": {
9099 "type": "string"
9100 },
9101 "message": {
9102 "type": "string"
9103 },
9104 "request_id": {
9105 "type": "string"
9106 }
9107 }
9108 },
9109 "AppResponseData_Page_AdminChatRoomMemberDto": {
9110 "type": "object",
9111 "required": [
9112 "code",
9113 "message",
9114 "request_id",
9115 "log_id"
9116 ],
9117 "properties": {
9118 "code": {
9119 "type": "integer",
9120 "format": "int32"
9121 },
9122 "data": {
9123 "type": "object",
9124 "required": [
9125 "items",
9126 "total",
9127 "limit",
9128 "offset"
9129 ],
9130 "properties": {
9131 "items": {
9132 "type": "array",
9133 "items": {
9134 "type": "object",
9135 "required": [
9136 "user_id",
9137 "role",
9138 "joined_at"
9139 ],
9140 "properties": {
9141 "display_name": {
9142 "type": [
9143 "string",
9144 "null"
9145 ]
9146 },
9147 "joined_at": {
9148 "type": "string",
9149 "format": "date-time"
9150 },
9151 "left_at": {
9152 "type": [
9153 "string",
9154 "null"
9155 ],
9156 "format": "date-time"
9157 },
9158 "nick": {
9159 "type": [
9160 "string",
9161 "null"
9162 ]
9163 },
9164 "role": {
9165 "type": "string"
9166 },
9167 "user_id": {
9168 "type": "string",
9169 "format": "uuid"
9170 },
9171 "username": {
9172 "type": [
9173 "string",
9174 "null"
9175 ]
9176 }
9177 }
9178 }
9179 },
9180 "limit": {
9181 "type": "integer",
9182 "format": "int64",
9183 "minimum": 0
9184 },
9185 "offset": {
9186 "type": "integer",
9187 "format": "int64",
9188 "minimum": 0
9189 },
9190 "total": {
9191 "type": "integer",
9192 "format": "int64"
9193 }
9194 }
9195 },
9196 "error": {
9197 "type": [
9198 "string",
9199 "null"
9200 ]
9201 },
9202 "error_code": {
9203 "type": [
9204 "string",
9205 "null"
9206 ]
9207 },
9208 "log_id": {
9209 "type": "string"
9210 },
9211 "message": {
9212 "type": "string"
9213 },
9214 "request_id": {
9215 "type": "string"
9216 }
9217 }
9218 },
9219 "AppResponseData_Page_AdminChatRoomSummary": {
9220 "type": "object",
9221 "required": [
9222 "code",
9223 "message",
9224 "request_id",
9225 "log_id"
9226 ],
9227 "properties": {
9228 "code": {
9229 "type": "integer",
9230 "format": "int32"
9231 },
9232 "data": {
9233 "type": "object",
9234 "required": [
9235 "items",
9236 "total",
9237 "limit",
9238 "offset"
9239 ],
9240 "properties": {
9241 "items": {
9242 "type": "array",
9243 "items": {
9244 "type": "object",
9245 "required": [
9246 "id",
9247 "kind",
9248 "name",
9249 "lower_name",
9250 "owner_id",
9251 "is_private",
9252 "nsfw",
9253 "is_active",
9254 "members",
9255 "messages",
9256 "created_at",
9257 "updated_at"
9258 ],
9259 "properties": {
9260 "created_at": {
9261 "type": "string",
9262 "format": "date-time"
9263 },
9264 "id": {
9265 "type": "string",
9266 "format": "uuid"
9267 },
9268 "is_active": {
9269 "type": "boolean"
9270 },
9271 "is_private": {
9272 "type": "boolean"
9273 },
9274 "kind": {
9275 "type": "string"
9276 },
9277 "last_message_at": {
9278 "type": [
9279 "string",
9280 "null"
9281 ],
9282 "format": "date-time"
9283 },
9284 "lower_name": {
9285 "type": "string"
9286 },
9287 "members": {
9288 "type": "integer",
9289 "format": "int64"
9290 },
9291 "messages": {
9292 "type": "integer",
9293 "format": "int64"
9294 },
9295 "name": {
9296 "type": "string"
9297 },
9298 "nsfw": {
9299 "type": "boolean"
9300 },
9301 "owner_id": {
9302 "type": "string",
9303 "format": "uuid"
9304 },
9305 "owner_username": {
9306 "type": [
9307 "string",
9308 "null"
9309 ]
9310 },
9311 "space_id": {
9312 "type": [
9313 "string",
9314 "null"
9315 ],
9316 "format": "uuid"
9317 },
9318 "space_name": {
9319 "type": [
9320 "string",
9321 "null"
9322 ]
9323 },
9324 "topic": {
9325 "type": [
9326 "string",
9327 "null"
9328 ]
9329 },
9330 "updated_at": {
9331 "type": "string",
9332 "format": "date-time"
9333 }
9334 }
9335 }
9336 },
9337 "limit": {
9338 "type": "integer",
9339 "format": "int64",
9340 "minimum": 0
9341 },
9342 "offset": {
9343 "type": "integer",
9344 "format": "int64",
9345 "minimum": 0
9346 },
9347 "total": {
9348 "type": "integer",
9349 "format": "int64"
9350 }
9351 }
9352 },
9353 "error": {
9354 "type": [
9355 "string",
9356 "null"
9357 ]
9358 },
9359 "error_code": {
9360 "type": [
9361 "string",
9362 "null"
9363 ]
9364 },
9365 "log_id": {
9366 "type": "string"
9367 },
9368 "message": {
9369 "type": "string"
9370 },
9371 "request_id": {
9372 "type": "string"
9373 }
9374 }
9375 },
9376 "AppResponseData_Page_AdminDto": {
9377 "type": "object",
9378 "required": [
9379 "code",
9380 "message",
9381 "request_id",
9382 "log_id"
9383 ],
9384 "properties": {
9385 "code": {
9386 "type": "integer",
9387 "format": "int32"
9388 },
9389 "data": {
9390 "type": "object",
9391 "required": [
9392 "items",
9393 "total",
9394 "limit",
9395 "offset"
9396 ],
9397 "properties": {
9398 "items": {
9399 "type": "array",
9400 "items": {
9401 "type": "object",
9402 "required": [
9403 "id",
9404 "username",
9405 "display_name",
9406 "role",
9407 "is_active",
9408 "must_change_password",
9409 "created_at",
9410 "updated_at"
9411 ],
9412 "properties": {
9413 "created_at": {
9414 "type": "string",
9415 "format": "date-time"
9416 },
9417 "display_name": {
9418 "type": "string"
9419 },
9420 "id": {
9421 "type": "string",
9422 "format": "uuid"
9423 },
9424 "is_active": {
9425 "type": "boolean"
9426 },
9427 "last_login_at": {
9428 "type": [
9429 "string",
9430 "null"
9431 ],
9432 "format": "date-time"
9433 },
9434 "last_login_ip": {
9435 "type": [
9436 "string",
9437 "null"
9438 ]
9439 },
9440 "must_change_password": {
9441 "type": "boolean"
9442 },
9443 "role": {
9444 "$ref": "#/components/schemas/AdminRole"
9445 },
9446 "updated_at": {
9447 "type": "string",
9448 "format": "date-time"
9449 },
9450 "username": {
9451 "type": "string"
9452 }
9453 }
9454 }
9455 },
9456 "limit": {
9457 "type": "integer",
9458 "format": "int64",
9459 "minimum": 0
9460 },
9461 "offset": {
9462 "type": "integer",
9463 "format": "int64",
9464 "minimum": 0
9465 },
9466 "total": {
9467 "type": "integer",
9468 "format": "int64"
9469 }
9470 }
9471 },
9472 "error": {
9473 "type": [
9474 "string",
9475 "null"
9476 ]
9477 },
9478 "error_code": {
9479 "type": [
9480 "string",
9481 "null"
9482 ]
9483 },
9484 "log_id": {
9485 "type": "string"
9486 },
9487 "message": {
9488 "type": "string"
9489 },
9490 "request_id": {
9491 "type": "string"
9492 }
9493 }
9494 },
9495 "AppResponseData_Page_AdminSpaceMemberDto": {
9496 "type": "object",
9497 "required": [
9498 "code",
9499 "message",
9500 "request_id",
9501 "log_id"
9502 ],
9503 "properties": {
9504 "code": {
9505 "type": "integer",
9506 "format": "int32"
9507 },
9508 "data": {
9509 "type": "object",
9510 "required": [
9511 "items",
9512 "total",
9513 "limit",
9514 "offset"
9515 ],
9516 "properties": {
9517 "items": {
9518 "type": "array",
9519 "items": {
9520 "type": "object",
9521 "required": [
9522 "user_id",
9523 "status",
9524 "joined_at"
9525 ],
9526 "properties": {
9527 "alias_name": {
9528 "type": [
9529 "string",
9530 "null"
9531 ]
9532 },
9533 "display_name": {
9534 "type": [
9535 "string",
9536 "null"
9537 ]
9538 },
9539 "joined_at": {
9540 "type": "string",
9541 "format": "date-time"
9542 },
9543 "last_active_at": {
9544 "type": [
9545 "string",
9546 "null"
9547 ],
9548 "format": "date-time"
9549 },
9550 "status": {
9551 "type": "string"
9552 },
9553 "user_id": {
9554 "type": "string",
9555 "format": "uuid"
9556 },
9557 "username": {
9558 "type": [
9559 "string",
9560 "null"
9561 ]
9562 }
9563 }
9564 }
9565 },
9566 "limit": {
9567 "type": "integer",
9568 "format": "int64",
9569 "minimum": 0
9570 },
9571 "offset": {
9572 "type": "integer",
9573 "format": "int64",
9574 "minimum": 0
9575 },
9576 "total": {
9577 "type": "integer",
9578 "format": "int64"
9579 }
9580 }
9581 },
9582 "error": {
9583 "type": [
9584 "string",
9585 "null"
9586 ]
9587 },
9588 "error_code": {
9589 "type": [
9590 "string",
9591 "null"
9592 ]
9593 },
9594 "log_id": {
9595 "type": "string"
9596 },
9597 "message": {
9598 "type": "string"
9599 },
9600 "request_id": {
9601 "type": "string"
9602 }
9603 }
9604 },
9605 "AppResponseData_Page_AdminSpaceSummary": {
9606 "type": "object",
9607 "required": [
9608 "code",
9609 "message",
9610 "request_id",
9611 "log_id"
9612 ],
9613 "properties": {
9614 "code": {
9615 "type": "integer",
9616 "format": "int32"
9617 },
9618 "data": {
9619 "type": "object",
9620 "required": [
9621 "items",
9622 "total",
9623 "limit",
9624 "offset"
9625 ],
9626 "properties": {
9627 "items": {
9628 "type": "array",
9629 "items": {
9630 "type": "object",
9631 "required": [
9632 "id",
9633 "name",
9634 "lower_name",
9635 "owner_id",
9636 "is_private",
9637 "is_active",
9638 "allow_join",
9639 "allow_invite",
9640 "member_must_enable_2fa",
9641 "nums_members",
9642 "created_at",
9643 "updated_at"
9644 ],
9645 "properties": {
9646 "allow_invite": {
9647 "type": "boolean"
9648 },
9649 "allow_join": {
9650 "type": "boolean"
9651 },
9652 "created_at": {
9653 "type": "string",
9654 "format": "date-time"
9655 },
9656 "description": {
9657 "type": [
9658 "string",
9659 "null"
9660 ]
9661 },
9662 "id": {
9663 "type": "string",
9664 "format": "uuid"
9665 },
9666 "is_active": {
9667 "type": "boolean"
9668 },
9669 "is_private": {
9670 "type": "boolean"
9671 },
9672 "lower_name": {
9673 "type": "string"
9674 },
9675 "member_must_enable_2fa": {
9676 "type": "boolean"
9677 },
9678 "name": {
9679 "type": "string"
9680 },
9681 "nums_members": {
9682 "type": "integer",
9683 "format": "int64"
9684 },
9685 "owner_id": {
9686 "type": "string",
9687 "format": "uuid"
9688 },
9689 "owner_username": {
9690 "type": [
9691 "string",
9692 "null"
9693 ]
9694 },
9695 "updated_at": {
9696 "type": "string",
9697 "format": "date-time"
9698 }
9699 }
9700 }
9701 },
9702 "limit": {
9703 "type": "integer",
9704 "format": "int64",
9705 "minimum": 0
9706 },
9707 "offset": {
9708 "type": "integer",
9709 "format": "int64",
9710 "minimum": 0
9711 },
9712 "total": {
9713 "type": "integer",
9714 "format": "int64"
9715 }
9716 }
9717 },
9718 "error": {
9719 "type": [
9720 "string",
9721 "null"
9722 ]
9723 },
9724 "error_code": {
9725 "type": [
9726 "string",
9727 "null"
9728 ]
9729 },
9730 "log_id": {
9731 "type": "string"
9732 },
9733 "message": {
9734 "type": "string"
9735 },
9736 "request_id": {
9737 "type": "string"
9738 }
9739 }
9740 },
9741 "AppResponseData_Page_AdminUserSummary": {
9742 "type": "object",
9743 "required": [
9744 "code",
9745 "message",
9746 "request_id",
9747 "log_id"
9748 ],
9749 "properties": {
9750 "code": {
9751 "type": "integer",
9752 "format": "int32"
9753 },
9754 "data": {
9755 "type": "object",
9756 "required": [
9757 "items",
9758 "total",
9759 "limit",
9760 "offset"
9761 ],
9762 "properties": {
9763 "items": {
9764 "type": "array",
9765 "items": {
9766 "type": "object",
9767 "required": [
9768 "uid",
9769 "username",
9770 "display_name",
9771 "avatar_url",
9772 "is_active",
9773 "is_restricted",
9774 "prohibit_login",
9775 "bot",
9776 "system",
9777 "suspended",
9778 "created_at"
9779 ],
9780 "properties": {
9781 "avatar_url": {
9782 "type": "string"
9783 },
9784 "bot": {
9785 "type": "boolean"
9786 },
9787 "created_at": {
9788 "type": "string",
9789 "format": "date-time"
9790 },
9791 "display_name": {
9792 "type": "string"
9793 },
9794 "is_active": {
9795 "type": "boolean"
9796 },
9797 "is_restricted": {
9798 "type": "boolean"
9799 },
9800 "last_login_at": {
9801 "type": [
9802 "string",
9803 "null"
9804 ],
9805 "format": "date-time"
9806 },
9807 "prohibit_login": {
9808 "type": "boolean"
9809 },
9810 "suspended": {
9811 "type": "boolean"
9812 },
9813 "system": {
9814 "type": "boolean"
9815 },
9816 "uid": {
9817 "type": "string",
9818 "format": "uuid"
9819 },
9820 "username": {
9821 "type": "string"
9822 }
9823 }
9824 }
9825 },
9826 "limit": {
9827 "type": "integer",
9828 "format": "int64",
9829 "minimum": 0
9830 },
9831 "offset": {
9832 "type": "integer",
9833 "format": "int64",
9834 "minimum": 0
9835 },
9836 "total": {
9837 "type": "integer",
9838 "format": "int64"
9839 }
9840 }
9841 },
9842 "error": {
9843 "type": [
9844 "string",
9845 "null"
9846 ]
9847 },
9848 "error_code": {
9849 "type": [
9850 "string",
9851 "null"
9852 ]
9853 },
9854 "log_id": {
9855 "type": "string"
9856 },
9857 "message": {
9858 "type": "string"
9859 },
9860 "request_id": {
9861 "type": "string"
9862 }
9863 }
9864 },
9865 "AppResponseData_PurgeChatMessagesResp": {
9866 "type": "object",
9867 "required": [
9868 "code",
9869 "message",
9870 "request_id",
9871 "log_id"
9872 ],
9873 "properties": {
9874 "code": {
9875 "type": "integer",
9876 "format": "int32"
9877 },
9878 "data": {
9879 "type": "object",
9880 "required": [
9881 "room_id",
9882 "messages_deleted",
9883 "attachments_deleted",
9884 "threads_deleted"
9885 ],
9886 "properties": {
9887 "attachments_deleted": {
9888 "type": "integer",
9889 "format": "int64",
9890 "minimum": 0
9891 },
9892 "messages_deleted": {
9893 "type": "integer",
9894 "format": "int64",
9895 "minimum": 0
9896 },
9897 "room_id": {
9898 "type": "string",
9899 "format": "uuid"
9900 },
9901 "threads_deleted": {
9902 "type": "integer",
9903 "format": "int64",
9904 "minimum": 0
9905 }
9906 }
9907 },
9908 "error": {
9909 "type": [
9910 "string",
9911 "null"
9912 ]
9913 },
9914 "error_code": {
9915 "type": [
9916 "string",
9917 "null"
9918 ]
9919 },
9920 "log_id": {
9921 "type": "string"
9922 },
9923 "message": {
9924 "type": "string"
9925 },
9926 "request_id": {
9927 "type": "string"
9928 }
9929 }
9930 },
9931 "AppResponseData_QueueActionResp": {
9932 "type": "object",
9933 "required": [
9934 "code",
9935 "message",
9936 "request_id",
9937 "log_id"
9938 ],
9939 "properties": {
9940 "code": {
9941 "type": "integer",
9942 "format": "int32"
9943 },
9944 "data": {
9945 "type": "object",
9946 "required": [
9947 "queue",
9948 "affected"
9949 ],
9950 "properties": {
9951 "affected": {
9952 "type": "integer",
9953 "format": "int64",
9954 "minimum": 0
9955 },
9956 "queue": {
9957 "type": "string"
9958 }
9959 }
9960 },
9961 "error": {
9962 "type": [
9963 "string",
9964 "null"
9965 ]
9966 },
9967 "error_code": {
9968 "type": [
9969 "string",
9970 "null"
9971 ]
9972 },
9973 "log_id": {
9974 "type": "string"
9975 },
9976 "message": {
9977 "type": "string"
9978 },
9979 "request_id": {
9980 "type": "string"
9981 }
9982 }
9983 },
9984 "AppResponseData_RemoveChatMemberResp": {
9985 "type": "object",
9986 "required": [
9987 "code",
9988 "message",
9989 "request_id",
9990 "log_id"
9991 ],
9992 "properties": {
9993 "code": {
9994 "type": "integer",
9995 "format": "int32"
9996 },
9997 "data": {
9998 "type": "object",
9999 "required": [
10000 "room_id",
10001 "user_id",
10002 "removed"
10003 ],
10004 "properties": {
10005 "removed": {
10006 "type": "boolean"
10007 },
10008 "room_id": {
10009 "type": "string",
10010 "format": "uuid"
10011 },
10012 "user_id": {
10013 "type": "string",
10014 "format": "uuid"
10015 }
10016 }
10017 },
10018 "error": {
10019 "type": [
10020 "string",
10021 "null"
10022 ]
10023 },
10024 "error_code": {
10025 "type": [
10026 "string",
10027 "null"
10028 ]
10029 },
10030 "log_id": {
10031 "type": "string"
10032 },
10033 "message": {
10034 "type": "string"
10035 },
10036 "request_id": {
10037 "type": "string"
10038 }
10039 }
10040 },
10041 "AppResponseData_RemoveMemberResp": {
10042 "type": "object",
10043 "required": [
10044 "code",
10045 "message",
10046 "request_id",
10047 "log_id"
10048 ],
10049 "properties": {
10050 "code": {
10051 "type": "integer",
10052 "format": "int32"
10053 },
10054 "data": {
10055 "type": "object",
10056 "required": [
10057 "space_id",
10058 "user_id",
10059 "removed"
10060 ],
10061 "properties": {
10062 "removed": {
10063 "type": "boolean"
10064 },
10065 "space_id": {
10066 "type": "string",
10067 "format": "uuid"
10068 },
10069 "user_id": {
10070 "type": "string",
10071 "format": "uuid"
10072 }
10073 }
10074 },
10075 "error": {
10076 "type": [
10077 "string",
10078 "null"
10079 ]
10080 },
10081 "error_code": {
10082 "type": [
10083 "string",
10084 "null"
10085 ]
10086 },
10087 "log_id": {
10088 "type": "string"
10089 },
10090 "message": {
10091 "type": "string"
10092 },
10093 "request_id": {
10094 "type": "string"
10095 }
10096 }
10097 },
10098 "AppResponseData_RevokeSessionsResp": {
10099 "type": "object",
10100 "required": [
10101 "code",
10102 "message",
10103 "request_id",
10104 "log_id"
10105 ],
10106 "properties": {
10107 "code": {
10108 "type": "integer",
10109 "format": "int32"
10110 },
10111 "data": {
10112 "type": "object",
10113 "required": [
10114 "revoked"
10115 ],
10116 "properties": {
10117 "revoked": {
10118 "type": "integer",
10119 "format": "int64",
10120 "minimum": 0
10121 }
10122 }
10123 },
10124 "error": {
10125 "type": [
10126 "string",
10127 "null"
10128 ]
10129 },
10130 "error_code": {
10131 "type": [
10132 "string",
10133 "null"
10134 ]
10135 },
10136 "log_id": {
10137 "type": "string"
10138 },
10139 "message": {
10140 "type": "string"
10141 },
10142 "request_id": {
10143 "type": "string"
10144 }
10145 }
10146 },
10147 "AppResponseData_RunnerDto": {
10148 "type": "object",
10149 "required": [
10150 "code",
10151 "message",
10152 "request_id",
10153 "log_id"
10154 ],
10155 "properties": {
10156 "code": {
10157 "type": "integer",
10158 "format": "int32"
10159 },
10160 "data": {
10161 "type": "object",
10162 "required": [
10163 "id",
10164 "name",
10165 "labels",
10166 "capacity",
10167 "capabilities",
10168 "state",
10169 "active_jobs",
10170 "created_at"
10171 ],
10172 "properties": {
10173 "active_jobs": {
10174 "type": "integer",
10175 "format": "int64"
10176 },
10177 "capabilities": {
10178 "type": "array",
10179 "items": {
10180 "type": "string"
10181 }
10182 },
10183 "capacity": {
10184 "type": "integer",
10185 "format": "int32"
10186 },
10187 "created_at": {
10188 "type": "string",
10189 "format": "date-time"
10190 },
10191 "id": {
10192 "type": "string",
10193 "format": "uuid"
10194 },
10195 "labels": {
10196 "type": "array",
10197 "items": {
10198 "type": "string"
10199 }
10200 },
10201 "last_seen_at": {
10202 "type": [
10203 "string",
10204 "null"
10205 ],
10206 "format": "date-time"
10207 },
10208 "name": {
10209 "type": "string"
10210 },
10211 "protocol_version": {
10212 "type": [
10213 "integer",
10214 "null"
10215 ],
10216 "format": "int32"
10217 },
10218 "space_id": {
10219 "type": [
10220 "string",
10221 "null"
10222 ],
10223 "format": "uuid"
10224 },
10225 "state": {
10226 "type": "string"
10227 },
10228 "version": {
10229 "type": [
10230 "string",
10231 "null"
10232 ]
10233 }
10234 }
10235 },
10236 "error": {
10237 "type": [
10238 "string",
10239 "null"
10240 ]
10241 },
10242 "error_code": {
10243 "type": [
10244 "string",
10245 "null"
10246 ]
10247 },
10248 "log_id": {
10249 "type": "string"
10250 },
10251 "message": {
10252 "type": "string"
10253 },
10254 "request_id": {
10255 "type": "string"
10256 }
10257 }
10258 },
10259 "AppResponseData_RunnerPageDto": {
10260 "type": "object",
10261 "required": [
10262 "code",
10263 "message",
10264 "request_id",
10265 "log_id"
10266 ],
10267 "properties": {
10268 "code": {
10269 "type": "integer",
10270 "format": "int32"
10271 },
10272 "data": {
10273 "type": "object",
10274 "required": [
10275 "items",
10276 "total",
10277 "limit",
10278 "offset"
10279 ],
10280 "properties": {
10281 "items": {
10282 "type": "array",
10283 "items": {
10284 "$ref": "#/components/schemas/RunnerDto"
10285 }
10286 },
10287 "limit": {
10288 "type": "integer",
10289 "format": "int64",
10290 "minimum": 0
10291 },
10292 "offset": {
10293 "type": "integer",
10294 "format": "int64",
10295 "minimum": 0
10296 },
10297 "total": {
10298 "type": "integer",
10299 "format": "int64",
10300 "minimum": 0
10301 }
10302 }
10303 },
10304 "error": {
10305 "type": [
10306 "string",
10307 "null"
10308 ]
10309 },
10310 "error_code": {
10311 "type": [
10312 "string",
10313 "null"
10314 ]
10315 },
10316 "log_id": {
10317 "type": "string"
10318 },
10319 "message": {
10320 "type": "string"
10321 },
10322 "request_id": {
10323 "type": "string"
10324 }
10325 }
10326 },
10327 "AppResponseData_StorageObjectPageDto": {
10328 "type": "object",
10329 "required": [
10330 "code",
10331 "message",
10332 "request_id",
10333 "log_id"
10334 ],
10335 "properties": {
10336 "code": {
10337 "type": "integer",
10338 "format": "int32"
10339 },
10340 "data": {
10341 "type": "object",
10342 "required": [
10343 "prefix",
10344 "items"
10345 ],
10346 "properties": {
10347 "items": {
10348 "type": "array",
10349 "items": {
10350 "$ref": "#/components/schemas/StorageObjectDto"
10351 }
10352 },
10353 "next_token": {
10354 "type": [
10355 "string",
10356 "null"
10357 ]
10358 },
10359 "prefix": {
10360 "type": "string"
10361 }
10362 }
10363 },
10364 "error": {
10365 "type": [
10366 "string",
10367 "null"
10368 ]
10369 },
10370 "error_code": {
10371 "type": [
10372 "string",
10373 "null"
10374 ]
10375 },
10376 "log_id": {
10377 "type": "string"
10378 },
10379 "message": {
10380 "type": "string"
10381 },
10382 "request_id": {
10383 "type": "string"
10384 }
10385 }
10386 },
10387 "AppResponseData_StorageOverviewDto": {
10388 "type": "object",
10389 "required": [
10390 "code",
10391 "message",
10392 "request_id",
10393 "log_id"
10394 ],
10395 "properties": {
10396 "code": {
10397 "type": "integer",
10398 "format": "int32"
10399 },
10400 "data": {
10401 "type": "object",
10402 "required": [
10403 "bucket",
10404 "total_bytes",
10405 "total_objects",
10406 "categories",
10407 "generated_at",
10408 "cached"
10409 ],
10410 "properties": {
10411 "bucket": {
10412 "type": "string"
10413 },
10414 "cached": {
10415 "type": "boolean"
10416 },
10417 "categories": {
10418 "type": "array",
10419 "items": {
10420 "$ref": "#/components/schemas/StorageCategoryDto"
10421 }
10422 },
10423 "generated_at": {
10424 "type": "string",
10425 "format": "date-time"
10426 },
10427 "total_bytes": {
10428 "type": "integer",
10429 "format": "int64",
10430 "minimum": 0
10431 },
10432 "total_objects": {
10433 "type": "integer",
10434 "format": "int64",
10435 "minimum": 0
10436 }
10437 }
10438 },
10439 "error": {
10440 "type": [
10441 "string",
10442 "null"
10443 ]
10444 },
10445 "error_code": {
10446 "type": [
10447 "string",
10448 "null"
10449 ]
10450 },
10451 "log_id": {
10452 "type": "string"
10453 },
10454 "message": {
10455 "type": "string"
10456 },
10457 "request_id": {
10458 "type": "string"
10459 }
10460 }
10461 },
10462 "AppResponseData_String": {
10463 "type": "object",
10464 "required": [
10465 "code",
10466 "message",
10467 "request_id",
10468 "log_id"
10469 ],
10470 "properties": {
10471 "code": {
10472 "type": "integer",
10473 "format": "int32"
10474 },
10475 "data": {
10476 "type": "string"
10477 },
10478 "error": {
10479 "type": [
10480 "string",
10481 "null"
10482 ]
10483 },
10484 "error_code": {
10485 "type": [
10486 "string",
10487 "null"
10488 ]
10489 },
10490 "log_id": {
10491 "type": "string"
10492 },
10493 "message": {
10494 "type": "string"
10495 },
10496 "request_id": {
10497 "type": "string"
10498 }
10499 }
10500 },
10501 "AppResponseData_SystemConfigDto": {
10502 "type": "object",
10503 "required": [
10504 "code",
10505 "message",
10506 "request_id",
10507 "log_id"
10508 ],
10509 "properties": {
10510 "code": {
10511 "type": "integer",
10512 "format": "int32"
10513 },
10514 "data": {
10515 "type": "object",
10516 "required": [
10517 "version",
10518 "hosts",
10519 "admin",
10520 "features",
10521 "search",
10522 "import",
10523 "git",
10524 "storage",
10525 "database",
10526 "redis",
10527 "session",
10528 "email",
10529 "generated_at"
10530 ],
10531 "properties": {
10532 "admin": {
10533 "$ref": "#/components/schemas/AdminEndpointDto"
10534 },
10535 "database": {
10536 "$ref": "#/components/schemas/DatabaseConfigDto"
10537 },
10538 "email": {
10539 "$ref": "#/components/schemas/EmailConfigDto"
10540 },
10541 "features": {
10542 "$ref": "#/components/schemas/FeaturesDto"
10543 },
10544 "generated_at": {
10545 "type": "string",
10546 "format": "date-time"
10547 },
10548 "git": {
10549 "$ref": "#/components/schemas/GitConfigDto"
10550 },
10551 "hosts": {
10552 "type": "array",
10553 "items": {
10554 "$ref": "#/components/schemas/HostEntryDto"
10555 }
10556 },
10557 "import": {
10558 "$ref": "#/components/schemas/ImportConfigDto"
10559 },
10560 "redis": {
10561 "$ref": "#/components/schemas/RedisConfigDto"
10562 },
10563 "search": {
10564 "$ref": "#/components/schemas/SearchConfigDto"
10565 },
10566 "session": {
10567 "$ref": "#/components/schemas/SessionConfigDto"
10568 },
10569 "storage": {
10570 "$ref": "#/components/schemas/StorageConfigDto"
10571 },
10572 "version": {
10573 "type": "string"
10574 }
10575 }
10576 },
10577 "error": {
10578 "type": [
10579 "string",
10580 "null"
10581 ]
10582 },
10583 "error_code": {
10584 "type": [
10585 "string",
10586 "null"
10587 ]
10588 },
10589 "log_id": {
10590 "type": "string"
10591 },
10592 "message": {
10593 "type": "string"
10594 },
10595 "request_id": {
10596 "type": "string"
10597 }
10598 }
10599 },
10600 "AppResponseData_SystemStatusDto": {
10601 "type": "object",
10602 "required": [
10603 "code",
10604 "message",
10605 "request_id",
10606 "log_id"
10607 ],
10608 "properties": {
10609 "code": {
10610 "type": "integer",
10611 "format": "int32"
10612 },
10613 "data": {
10614 "type": "object",
10615 "required": [
10616 "process",
10617 "dependencies",
10618 "features",
10619 "counts",
10620 "queues",
10621 "recent_failures",
10622 "generated_at"
10623 ],
10624 "properties": {
10625 "counts": {
10626 "$ref": "#/components/schemas/CountsDto"
10627 },
10628 "dependencies": {
10629 "$ref": "#/components/schemas/DependenciesDto"
10630 },
10631 "features": {
10632 "$ref": "#/components/schemas/FeaturesDto"
10633 },
10634 "generated_at": {
10635 "type": "string",
10636 "format": "date-time"
10637 },
10638 "process": {
10639 "$ref": "#/components/schemas/ProcessInfoDto"
10640 },
10641 "queues": {
10642 "type": "array",
10643 "items": {
10644 "$ref": "#/components/schemas/QueueSnapshotDto"
10645 }
10646 },
10647 "recent_failures": {
10648 "type": "array",
10649 "items": {
10650 "$ref": "#/components/schemas/JobLogDto"
10651 }
10652 }
10653 }
10654 },
10655 "error": {
10656 "type": [
10657 "string",
10658 "null"
10659 ]
10660 },
10661 "error_code": {
10662 "type": [
10663 "string",
10664 "null"
10665 ]
10666 },
10667 "log_id": {
10668 "type": "string"
10669 },
10670 "message": {
10671 "type": "string"
10672 },
10673 "request_id": {
10674 "type": "string"
10675 }
10676 }
10677 },
10678 "AppResponseData_TaskActionResp": {
10679 "type": "object",
10680 "required": [
10681 "code",
10682 "message",
10683 "request_id",
10684 "log_id"
10685 ],
10686 "properties": {
10687 "code": {
10688 "type": "integer",
10689 "format": "int32"
10690 },
10691 "data": {
10692 "type": "object",
10693 "required": [
10694 "source",
10695 "id",
10696 "state"
10697 ],
10698 "properties": {
10699 "id": {
10700 "type": "string",
10701 "format": "uuid"
10702 },
10703 "source": {
10704 "type": "string"
10705 },
10706 "state": {
10707 "type": "string"
10708 }
10709 }
10710 },
10711 "error": {
10712 "type": [
10713 "string",
10714 "null"
10715 ]
10716 },
10717 "error_code": {
10718 "type": [
10719 "string",
10720 "null"
10721 ]
10722 },
10723 "log_id": {
10724 "type": "string"
10725 },
10726 "message": {
10727 "type": "string"
10728 },
10729 "request_id": {
10730 "type": "string"
10731 }
10732 }
10733 },
10734 "AppResponseData_TaskDetailDto": {
10735 "type": "object",
10736 "required": [
10737 "code",
10738 "message",
10739 "request_id",
10740 "log_id"
10741 ],
10742 "properties": {
10743 "code": {
10744 "type": "integer",
10745 "format": "int32"
10746 },
10747 "data": {
10748 "type": "object",
10749 "required": [
10750 "task",
10751 "detail"
10752 ],
10753 "properties": {
10754 "detail": {},
10755 "task": {
10756 "$ref": "#/components/schemas/TaskDto"
10757 }
10758 }
10759 },
10760 "error": {
10761 "type": [
10762 "string",
10763 "null"
10764 ]
10765 },
10766 "error_code": {
10767 "type": [
10768 "string",
10769 "null"
10770 ]
10771 },
10772 "log_id": {
10773 "type": "string"
10774 },
10775 "message": {
10776 "type": "string"
10777 },
10778 "request_id": {
10779 "type": "string"
10780 }
10781 }
10782 },
10783 "AppResponseData_TaskPageDto": {
10784 "type": "object",
10785 "required": [
10786 "code",
10787 "message",
10788 "request_id",
10789 "log_id"
10790 ],
10791 "properties": {
10792 "code": {
10793 "type": "integer",
10794 "format": "int32"
10795 },
10796 "data": {
10797 "type": "object",
10798 "required": [
10799 "items",
10800 "total",
10801 "limit",
10802 "offset"
10803 ],
10804 "properties": {
10805 "items": {
10806 "type": "array",
10807 "items": {
10808 "$ref": "#/components/schemas/TaskDto"
10809 }
10810 },
10811 "limit": {
10812 "type": "integer",
10813 "format": "int64",
10814 "minimum": 0
10815 },
10816 "offset": {
10817 "type": "integer",
10818 "format": "int64",
10819 "minimum": 0
10820 },
10821 "total": {
10822 "type": "integer",
10823 "format": "int64"
10824 }
10825 }
10826 },
10827 "error": {
10828 "type": [
10829 "string",
10830 "null"
10831 ]
10832 },
10833 "error_code": {
10834 "type": [
10835 "string",
10836 "null"
10837 ]
10838 },
10839 "log_id": {
10840 "type": "string"
10841 },
10842 "message": {
10843 "type": "string"
10844 },
10845 "request_id": {
10846 "type": "string"
10847 }
10848 }
10849 },
10850 "AppResponseData_TaskStatsDto": {
10851 "type": "object",
10852 "required": [
10853 "code",
10854 "message",
10855 "request_id",
10856 "log_id"
10857 ],
10858 "properties": {
10859 "code": {
10860 "type": "integer",
10861 "format": "int32"
10862 },
10863 "data": {
10864 "type": "object",
10865 "required": [
10866 "sources",
10867 "total",
10868 "generated_at"
10869 ],
10870 "properties": {
10871 "generated_at": {
10872 "type": "string",
10873 "format": "date-time"
10874 },
10875 "sources": {
10876 "type": "array",
10877 "items": {
10878 "$ref": "#/components/schemas/TaskSourceStatDto"
10879 }
10880 },
10881 "total": {
10882 "type": "integer",
10883 "format": "int64"
10884 }
10885 }
10886 },
10887 "error": {
10888 "type": [
10889 "string",
10890 "null"
10891 ]
10892 },
10893 "error_code": {
10894 "type": [
10895 "string",
10896 "null"
10897 ]
10898 },
10899 "log_id": {
10900 "type": "string"
10901 },
10902 "message": {
10903 "type": "string"
10904 },
10905 "request_id": {
10906 "type": "string"
10907 }
10908 }
10909 },
10910 "AppResponseData_Vec_EnvironmentAdminDto": {
10911 "type": "object",
10912 "required": [
10913 "code",
10914 "message",
10915 "request_id",
10916 "log_id"
10917 ],
10918 "properties": {
10919 "code": {
10920 "type": "integer",
10921 "format": "int32"
10922 },
10923 "data": {
10924 "type": "array",
10925 "items": {
10926 "type": "object",
10927 "required": [
10928 "id",
10929 "space_id",
10930 "name",
10931 "required_labels",
10932 "secrets",
10933 "created_at",
10934 "updated_at"
10935 ],
10936 "properties": {
10937 "created_at": {
10938 "type": "string",
10939 "format": "date-time"
10940 },
10941 "description": {
10942 "type": [
10943 "string",
10944 "null"
10945 ]
10946 },
10947 "id": {
10948 "type": "string",
10949 "format": "uuid"
10950 },
10951 "name": {
10952 "type": "string"
10953 },
10954 "required_labels": {
10955 "type": "array",
10956 "items": {
10957 "type": "string"
10958 }
10959 },
10960 "secrets": {
10961 "type": "array",
10962 "items": {
10963 "type": "string"
10964 }
10965 },
10966 "space_id": {
10967 "type": "string",
10968 "format": "uuid"
10969 },
10970 "updated_at": {
10971 "type": "string",
10972 "format": "date-time"
10973 }
10974 }
10975 }
10976 },
10977 "error": {
10978 "type": [
10979 "string",
10980 "null"
10981 ]
10982 },
10983 "error_code": {
10984 "type": [
10985 "string",
10986 "null"
10987 ]
10988 },
10989 "log_id": {
10990 "type": "string"
10991 },
10992 "message": {
10993 "type": "string"
10994 },
10995 "request_id": {
10996 "type": "string"
10997 }
10998 }
10999 },
11000 "AppResponseData_Vec_QueueSnapshotDto": {
11001 "type": "object",
11002 "required": [
11003 "code",
11004 "message",
11005 "request_id",
11006 "log_id"
11007 ],
11008 "properties": {
11009 "code": {
11010 "type": "integer",
11011 "format": "int32"
11012 },
11013 "data": {
11014 "type": "array",
11015 "items": {
11016 "type": "object",
11017 "required": [
11018 "name",
11019 "kind",
11020 "enabled",
11021 "queued",
11022 "running",
11023 "failed",
11024 "succeeded"
11025 ],
11026 "properties": {
11027 "depth": {
11028 "type": [
11029 "integer",
11030 "null"
11031 ],
11032 "format": "int64"
11033 },
11034 "enabled": {
11035 "type": "boolean"
11036 },
11037 "failed": {
11038 "type": "integer",
11039 "format": "int64"
11040 },
11041 "kind": {
11042 "type": "string"
11043 },
11044 "name": {
11045 "type": "string"
11046 },
11047 "note": {
11048 "type": [
11049 "string",
11050 "null"
11051 ]
11052 },
11053 "queued": {
11054 "type": "integer",
11055 "format": "int64"
11056 },
11057 "running": {
11058 "type": "integer",
11059 "format": "int64"
11060 },
11061 "succeeded": {
11062 "type": "integer",
11063 "format": "int64"
11064 }
11065 }
11066 }
11067 },
11068 "error": {
11069 "type": [
11070 "string",
11071 "null"
11072 ]
11073 },
11074 "error_code": {
11075 "type": [
11076 "string",
11077 "null"
11078 ]
11079 },
11080 "log_id": {
11081 "type": "string"
11082 },
11083 "message": {
11084 "type": "string"
11085 },
11086 "request_id": {
11087 "type": "string"
11088 }
11089 }
11090 },
11091 "AppResponseData_Vec_RunnerDto": {
11092 "type": "object",
11093 "required": [
11094 "code",
11095 "message",
11096 "request_id",
11097 "log_id"
11098 ],
11099 "properties": {
11100 "code": {
11101 "type": "integer",
11102 "format": "int32"
11103 },
11104 "data": {
11105 "type": "array",
11106 "items": {
11107 "type": "object",
11108 "required": [
11109 "id",
11110 "name",
11111 "labels",
11112 "capacity",
11113 "capabilities",
11114 "state",
11115 "active_jobs",
11116 "created_at"
11117 ],
11118 "properties": {
11119 "active_jobs": {
11120 "type": "integer",
11121 "format": "int64"
11122 },
11123 "capabilities": {
11124 "type": "array",
11125 "items": {
11126 "type": "string"
11127 }
11128 },
11129 "capacity": {
11130 "type": "integer",
11131 "format": "int32"
11132 },
11133 "created_at": {
11134 "type": "string",
11135 "format": "date-time"
11136 },
11137 "id": {
11138 "type": "string",
11139 "format": "uuid"
11140 },
11141 "labels": {
11142 "type": "array",
11143 "items": {
11144 "type": "string"
11145 }
11146 },
11147 "last_seen_at": {
11148 "type": [
11149 "string",
11150 "null"
11151 ],
11152 "format": "date-time"
11153 },
11154 "name": {
11155 "type": "string"
11156 },
11157 "protocol_version": {
11158 "type": [
11159 "integer",
11160 "null"
11161 ],
11162 "format": "int32"
11163 },
11164 "space_id": {
11165 "type": [
11166 "string",
11167 "null"
11168 ],
11169 "format": "uuid"
11170 },
11171 "state": {
11172 "type": "string"
11173 },
11174 "version": {
11175 "type": [
11176 "string",
11177 "null"
11178 ]
11179 }
11180 }
11181 }
11182 },
11183 "error": {
11184 "type": [
11185 "string",
11186 "null"
11187 ]
11188 },
11189 "error_code": {
11190 "type": [
11191 "string",
11192 "null"
11193 ]
11194 },
11195 "log_id": {
11196 "type": "string"
11197 },
11198 "message": {
11199 "type": "string"
11200 },
11201 "request_id": {
11202 "type": "string"
11203 }
11204 }
11205 },
11206 "AppResponseData_Vec_RunnerTokenDto": {
11207 "type": "object",
11208 "required": [
11209 "code",
11210 "message",
11211 "request_id",
11212 "log_id"
11213 ],
11214 "properties": {
11215 "code": {
11216 "type": "integer",
11217 "format": "int32"
11218 },
11219 "data": {
11220 "type": "array",
11221 "items": {
11222 "type": "object",
11223 "required": [
11224 "id",
11225 "name",
11226 "single_use",
11227 "created_at"
11228 ],
11229 "properties": {
11230 "created_at": {
11231 "type": "string",
11232 "format": "date-time"
11233 },
11234 "expires_at": {
11235 "type": [
11236 "string",
11237 "null"
11238 ],
11239 "format": "date-time"
11240 },
11241 "id": {
11242 "type": "string",
11243 "format": "uuid"
11244 },
11245 "name": {
11246 "type": "string"
11247 },
11248 "revoked_at": {
11249 "type": [
11250 "string",
11251 "null"
11252 ],
11253 "format": "date-time"
11254 },
11255 "single_use": {
11256 "type": "boolean"
11257 },
11258 "space_id": {
11259 "type": [
11260 "string",
11261 "null"
11262 ],
11263 "format": "uuid"
11264 },
11265 "used_at": {
11266 "type": [
11267 "string",
11268 "null"
11269 ],
11270 "format": "date-time"
11271 }
11272 }
11273 }
11274 },
11275 "error": {
11276 "type": [
11277 "string",
11278 "null"
11279 ]
11280 },
11281 "error_code": {
11282 "type": [
11283 "string",
11284 "null"
11285 ]
11286 },
11287 "log_id": {
11288 "type": "string"
11289 },
11290 "message": {
11291 "type": "string"
11292 },
11293 "request_id": {
11294 "type": "string"
11295 }
11296 }
11297 },
11298 "AuditLogDto": {
11299 "type": "object",
11300 "required": [
11301 "id",
11302 "admin_username",
11303 "action",
11304 "detail",
11305 "created_at"
11306 ],
11307 "properties": {
11308 "action": {
11309 "type": "string"
11310 },
11311 "admin_id": {
11312 "type": [
11313 "string",
11314 "null"
11315 ],
11316 "format": "uuid"
11317 },
11318 "admin_username": {
11319 "type": "string"
11320 },
11321 "created_at": {
11322 "type": "string",
11323 "format": "date-time"
11324 },
11325 "detail": {},
11326 "id": {
11327 "type": "string",
11328 "format": "uuid"
11329 },
11330 "ip": {
11331 "type": [
11332 "string",
11333 "null"
11334 ]
11335 },
11336 "request_id": {
11337 "type": [
11338 "string",
11339 "null"
11340 ]
11341 },
11342 "target_id": {
11343 "type": [
11344 "string",
11345 "null"
11346 ]
11347 },
11348 "target_type": {
11349 "type": [
11350 "string",
11351 "null"
11352 ]
11353 },
11354 "user_agent": {
11355 "type": [
11356 "string",
11357 "null"
11358 ]
11359 }
11360 }
11361 },
11362 "AuditLogPageDto": {
11363 "type": "object",
11364 "required": [
11365 "items",
11366 "total",
11367 "limit",
11368 "offset"
11369 ],
11370 "properties": {
11371 "items": {
11372 "type": "array",
11373 "items": {
11374 "$ref": "#/components/schemas/AuditLogDto"
11375 }
11376 },
11377 "limit": {
11378 "type": "integer",
11379 "format": "int64",
11380 "minimum": 0
11381 },
11382 "offset": {
11383 "type": "integer",
11384 "format": "int64",
11385 "minimum": 0
11386 },
11387 "total": {
11388 "type": "integer",
11389 "format": "int64"
11390 }
11391 }
11392 },
11393 "BulkChatMessageFailure": {
11394 "type": "object",
11395 "required": [
11396 "id",
11397 "error"
11398 ],
11399 "properties": {
11400 "error": {
11401 "type": "string"
11402 },
11403 "id": {
11404 "type": "string",
11405 "format": "uuid"
11406 }
11407 }
11408 },
11409 "BulkDeleteChatMessagesCmd": {
11410 "type": "object",
11411 "required": [
11412 "message_ids"
11413 ],
11414 "properties": {
11415 "message_ids": {
11416 "type": "array",
11417 "items": {
11418 "type": "string",
11419 "format": "uuid"
11420 }
11421 },
11422 "reason": {
11423 "type": [
11424 "string",
11425 "null"
11426 ]
11427 }
11428 }
11429 },
11430 "BulkDeleteChatMessagesResp": {
11431 "type": "object",
11432 "required": [
11433 "succeeded",
11434 "failed"
11435 ],
11436 "properties": {
11437 "failed": {
11438 "type": "array",
11439 "items": {
11440 "$ref": "#/components/schemas/BulkChatMessageFailure"
11441 }
11442 },
11443 "succeeded": {
11444 "type": "array",
11445 "items": {
11446 "type": "string",
11447 "format": "uuid"
11448 }
11449 }
11450 }
11451 },
11452 "BulkTaskCmd": {
11453 "type": "object",
11454 "required": [
11455 "action",
11456 "ids"
11457 ],
11458 "properties": {
11459 "action": {
11460 "type": "string"
11461 },
11462 "ids": {
11463 "type": "array",
11464 "items": {
11465 "type": "string",
11466 "format": "uuid"
11467 }
11468 }
11469 }
11470 },
11471 "BulkTaskFailure": {
11472 "type": "object",
11473 "required": [
11474 "id",
11475 "error"
11476 ],
11477 "properties": {
11478 "error": {
11479 "type": "string"
11480 },
11481 "id": {
11482 "type": "string",
11483 "format": "uuid"
11484 }
11485 }
11486 },
11487 "BulkTaskResp": {
11488 "type": "object",
11489 "required": [
11490 "source",
11491 "action",
11492 "succeeded",
11493 "failed"
11494 ],
11495 "properties": {
11496 "action": {
11497 "type": "string"
11498 },
11499 "failed": {
11500 "type": "array",
11501 "items": {
11502 "$ref": "#/components/schemas/BulkTaskFailure"
11503 }
11504 },
11505 "source": {
11506 "type": "string"
11507 },
11508 "succeeded": {
11509 "type": "array",
11510 "items": {
11511 "type": "string",
11512 "format": "uuid"
11513 }
11514 }
11515 }
11516 },
11517 "BulkUserFailure": {
11518 "type": "object",
11519 "required": [
11520 "uid",
11521 "error"
11522 ],
11523 "properties": {
11524 "error": {
11525 "type": "string"
11526 },
11527 "uid": {
11528 "type": "string",
11529 "format": "uuid"
11530 }
11531 }
11532 },
11533 "BulkUsersCmd": {
11534 "type": "object",
11535 "required": [
11536 "action",
11537 "ids"
11538 ],
11539 "properties": {
11540 "action": {
11541 "type": "string"
11542 },
11543 "ends_at": {
11544 "type": [
11545 "string",
11546 "null"
11547 ],
11548 "format": "date-time"
11549 },
11550 "ids": {
11551 "type": "array",
11552 "items": {
11553 "type": "string",
11554 "format": "uuid"
11555 }
11556 },
11557 "reason": {
11558 "type": [
11559 "string",
11560 "null"
11561 ]
11562 },
11563 "suspension_type": {
11564 "oneOf": [
11565 {
11566 "type": "null"
11567 },
11568 {
11569 "$ref": "#/components/schemas/SuspensionType"
11570 }
11571 ]
11572 }
11573 }
11574 },
11575 "BulkUsersResp": {
11576 "type": "object",
11577 "required": [
11578 "action",
11579 "succeeded",
11580 "failed"
11581 ],
11582 "properties": {
11583 "action": {
11584 "type": "string"
11585 },
11586 "failed": {
11587 "type": "array",
11588 "items": {
11589 "$ref": "#/components/schemas/BulkUserFailure"
11590 }
11591 },
11592 "succeeded": {
11593 "type": "array",
11594 "items": {
11595 "type": "string",
11596 "format": "uuid"
11597 }
11598 }
11599 }
11600 },
11601 "ChangePasswordCmd": {
11602 "type": "object",
11603 "required": [
11604 "current_password",
11605 "new_password"
11606 ],
11607 "properties": {
11608 "current_password": {
11609 "type": "string"
11610 },
11611 "new_password": {
11612 "type": "string"
11613 }
11614 }
11615 },
11616 "CountsDto": {
11617 "type": "object",
11618 "required": [
11619 "users",
11620 "active_users",
11621 "spaces",
11622 "active_spaces",
11623 "repos",
11624 "rooms",
11625 "issues",
11626 "messages",
11627 "admin_users"
11628 ],
11629 "properties": {
11630 "active_spaces": {
11631 "type": "integer",
11632 "format": "int64"
11633 },
11634 "active_users": {
11635 "type": "integer",
11636 "format": "int64"
11637 },
11638 "admin_users": {
11639 "type": "integer",
11640 "format": "int64"
11641 },
11642 "issues": {
11643 "type": "integer",
11644 "format": "int64"
11645 },
11646 "messages": {
11647 "type": "integer",
11648 "format": "int64"
11649 },
11650 "repos": {
11651 "type": "integer",
11652 "format": "int64"
11653 },
11654 "rooms": {
11655 "type": "integer",
11656 "format": "int64"
11657 },
11658 "spaces": {
11659 "type": "integer",
11660 "format": "int64"
11661 },
11662 "users": {
11663 "type": "integer",
11664 "format": "int64"
11665 }
11666 }
11667 },
11668 "CreateAdminCmd": {
11669 "type": "object",
11670 "required": [
11671 "username",
11672 "password",
11673 "role"
11674 ],
11675 "properties": {
11676 "display_name": {
11677 "type": [
11678 "string",
11679 "null"
11680 ]
11681 },
11682 "password": {
11683 "type": "string"
11684 },
11685 "role": {
11686 "$ref": "#/components/schemas/AdminRole"
11687 },
11688 "username": {
11689 "type": "string"
11690 }
11691 }
11692 },
11693 "CreateRunnerTokenCmd": {
11694 "type": "object",
11695 "required": [
11696 "name"
11697 ],
11698 "properties": {
11699 "expires_in_days": {
11700 "type": [
11701 "integer",
11702 "null"
11703 ],
11704 "format": "int64"
11705 },
11706 "name": {
11707 "type": "string"
11708 },
11709 "space_id": {
11710 "type": [
11711 "string",
11712 "null"
11713 ],
11714 "format": "uuid"
11715 }
11716 }
11717 },
11718 "CreateUserCmd": {
11719 "type": "object",
11720 "required": [
11721 "username",
11722 "email",
11723 "password"
11724 ],
11725 "properties": {
11726 "display_name": {
11727 "type": [
11728 "string",
11729 "null"
11730 ]
11731 },
11732 "email": {
11733 "type": "string"
11734 },
11735 "email_activated": {
11736 "type": [
11737 "boolean",
11738 "null"
11739 ]
11740 },
11741 "is_active": {
11742 "type": [
11743 "boolean",
11744 "null"
11745 ]
11746 },
11747 "password": {
11748 "type": "string"
11749 },
11750 "username": {
11751 "type": "string"
11752 }
11753 }
11754 },
11755 "CreateUserResp": {
11756 "type": "object",
11757 "required": [
11758 "uid",
11759 "username",
11760 "email"
11761 ],
11762 "properties": {
11763 "email": {
11764 "type": "string"
11765 },
11766 "uid": {
11767 "type": "string",
11768 "format": "uuid"
11769 },
11770 "username": {
11771 "type": "string"
11772 }
11773 }
11774 },
11775 "CreatedRunnerTokenDto": {
11776 "type": "object",
11777 "required": [
11778 "token",
11779 "plaintext"
11780 ],
11781 "properties": {
11782 "plaintext": {
11783 "type": "string"
11784 },
11785 "token": {
11786 "$ref": "#/components/schemas/RunnerTokenDto"
11787 }
11788 }
11789 },
11790 "DashboardDto": {
11791 "type": "object",
11792 "required": [
11793 "counts",
11794 "trend",
11795 "active_sessions",
11796 "restricted_users",
11797 "recent_audit",
11798 "recent_failures",
11799 "queues",
11800 "generated_at"
11801 ],
11802 "properties": {
11803 "active_sessions": {
11804 "type": "integer",
11805 "format": "int64"
11806 },
11807 "counts": {
11808 "$ref": "#/components/schemas/CountsDto"
11809 },
11810 "generated_at": {
11811 "type": "string",
11812 "format": "date-time"
11813 },
11814 "queues": {
11815 "type": "array",
11816 "items": {
11817 "$ref": "#/components/schemas/QueueSnapshotDto"
11818 }
11819 },
11820 "recent_audit": {
11821 "type": "array",
11822 "items": {
11823 "$ref": "#/components/schemas/AuditLogDto"
11824 }
11825 },
11826 "recent_failures": {
11827 "type": "array",
11828 "items": {
11829 "$ref": "#/components/schemas/JobLogDto"
11830 }
11831 },
11832 "restricted_users": {
11833 "type": "integer",
11834 "format": "int64"
11835 },
11836 "trend": {
11837 "type": "array",
11838 "items": {
11839 "$ref": "#/components/schemas/TrendPointDto"
11840 }
11841 }
11842 }
11843 },
11844 "DatabaseConfigDto": {
11845 "type": "object",
11846 "required": [
11847 "replica_count"
11848 ],
11849 "properties": {
11850 "database": {
11851 "type": [
11852 "string",
11853 "null"
11854 ]
11855 },
11856 "endpoint": {
11857 "type": [
11858 "string",
11859 "null"
11860 ]
11861 },
11862 "host": {
11863 "type": [
11864 "string",
11865 "null"
11866 ]
11867 },
11868 "max_connections": {
11869 "type": [
11870 "integer",
11871 "null"
11872 ],
11873 "format": "int32",
11874 "minimum": 0
11875 },
11876 "min_connections": {
11877 "type": [
11878 "integer",
11879 "null"
11880 ],
11881 "format": "int32",
11882 "minimum": 0
11883 },
11884 "port": {
11885 "type": [
11886 "integer",
11887 "null"
11888 ],
11889 "format": "int32",
11890 "minimum": 0
11891 },
11892 "replica_count": {
11893 "type": "integer",
11894 "minimum": 0
11895 },
11896 "ssl_mode": {
11897 "type": [
11898 "string",
11899 "null"
11900 ]
11901 }
11902 }
11903 },
11904 "DeleteChatAttachmentResp": {
11905 "type": "object",
11906 "required": [
11907 "id",
11908 "s3_key",
11909 "deleted",
11910 "storage_deleted"
11911 ],
11912 "properties": {
11913 "deleted": {
11914 "type": "boolean"
11915 },
11916 "id": {
11917 "type": "string",
11918 "format": "uuid"
11919 },
11920 "s3_key": {
11921 "type": "string"
11922 },
11923 "storage_deleted": {
11924 "type": "boolean"
11925 }
11926 }
11927 },
11928 "DeleteChatRoomResp": {
11929 "type": "object",
11930 "required": [
11931 "room_id",
11932 "messages_deleted",
11933 "members_deleted",
11934 "attachments_deleted",
11935 "threads_deleted"
11936 ],
11937 "properties": {
11938 "attachments_deleted": {
11939 "type": "integer",
11940 "format": "int64",
11941 "minimum": 0
11942 },
11943 "members_deleted": {
11944 "type": "integer",
11945 "format": "int64",
11946 "minimum": 0
11947 },
11948 "messages_deleted": {
11949 "type": "integer",
11950 "format": "int64",
11951 "minimum": 0
11952 },
11953 "room_id": {
11954 "type": "string",
11955 "format": "uuid"
11956 },
11957 "threads_deleted": {
11958 "type": "integer",
11959 "format": "int64",
11960 "minimum": 0
11961 }
11962 }
11963 },
11964 "DeleteObjectResp": {
11965 "type": "object",
11966 "required": [
11967 "key",
11968 "deleted"
11969 ],
11970 "properties": {
11971 "deleted": {
11972 "type": "boolean"
11973 },
11974 "key": {
11975 "type": "string"
11976 }
11977 }
11978 },
11979 "DeleteUserResp": {
11980 "type": "object",
11981 "required": [
11982 "user_id",
11983 "anonymized"
11984 ],
11985 "properties": {
11986 "anonymized": {
11987 "type": "boolean"
11988 },
11989 "user_id": {
11990 "type": "string",
11991 "format": "uuid"
11992 }
11993 }
11994 },
11995 "DependenciesDto": {
11996 "type": "object",
11997 "required": [
11998 "database",
11999 "redis",
12000 "storage",
12001 "search"
12002 ],
12003 "properties": {
12004 "database": {
12005 "$ref": "#/components/schemas/DependencyDto"
12006 },
12007 "redis": {
12008 "$ref": "#/components/schemas/DependencyDto"
12009 },
12010 "search": {
12011 "$ref": "#/components/schemas/DependencyDto"
12012 },
12013 "storage": {
12014 "$ref": "#/components/schemas/DependencyDto"
12015 }
12016 }
12017 },
12018 "DependencyDto": {
12019 "type": "object",
12020 "required": [
12021 "ok"
12022 ],
12023 "properties": {
12024 "detail": {
12025 "type": [
12026 "string",
12027 "null"
12028 ]
12029 },
12030 "latency_ms": {
12031 "type": [
12032 "integer",
12033 "null"
12034 ],
12035 "format": "int64",
12036 "minimum": 0
12037 },
12038 "ok": {
12039 "type": "boolean"
12040 }
12041 }
12042 },
12043 "DownloadUrlDto": {
12044 "type": "object",
12045 "required": [
12046 "key",
12047 "url",
12048 "expires_in_secs"
12049 ],
12050 "properties": {
12051 "expires_in_secs": {
12052 "type": "integer",
12053 "format": "int32",
12054 "minimum": 0
12055 },
12056 "key": {
12057 "type": "string"
12058 },
12059 "url": {
12060 "type": "string"
12061 }
12062 }
12063 },
12064 "EmailConfigDto": {
12065 "type": "object",
12066 "required": [
12067 "enabled",
12068 "queue_enabled",
12069 "smtp_host",
12070 "smtp_port"
12071 ],
12072 "properties": {
12073 "enabled": {
12074 "type": "boolean"
12075 },
12076 "from_address": {
12077 "type": [
12078 "string",
12079 "null"
12080 ]
12081 },
12082 "from_name": {
12083 "type": [
12084 "string",
12085 "null"
12086 ]
12087 },
12088 "queue_enabled": {
12089 "type": "boolean"
12090 },
12091 "smtp_host": {
12092 "type": "string"
12093 },
12094 "smtp_port": {
12095 "type": "integer",
12096 "format": "int32",
12097 "minimum": 0
12098 }
12099 }
12100 },
12101 "EnvironmentAdminDto": {
12102 "type": "object",
12103 "required": [
12104 "id",
12105 "space_id",
12106 "name",
12107 "required_labels",
12108 "secrets",
12109 "created_at",
12110 "updated_at"
12111 ],
12112 "properties": {
12113 "created_at": {
12114 "type": "string",
12115 "format": "date-time"
12116 },
12117 "description": {
12118 "type": [
12119 "string",
12120 "null"
12121 ]
12122 },
12123 "id": {
12124 "type": "string",
12125 "format": "uuid"
12126 },
12127 "name": {
12128 "type": "string"
12129 },
12130 "required_labels": {
12131 "type": "array",
12132 "items": {
12133 "type": "string"
12134 }
12135 },
12136 "secrets": {
12137 "type": "array",
12138 "items": {
12139 "type": "string"
12140 }
12141 },
12142 "space_id": {
12143 "type": "string",
12144 "format": "uuid"
12145 },
12146 "updated_at": {
12147 "type": "string",
12148 "format": "date-time"
12149 }
12150 }
12151 },
12152 "FeaturesDto": {
12153 "type": "object",
12154 "required": [
12155 "search_enabled",
12156 "import_enabled",
12157 "email_enabled",
12158 "email_queue_enabled"
12159 ],
12160 "properties": {
12161 "email_enabled": {
12162 "type": "boolean"
12163 },
12164 "email_queue_enabled": {
12165 "type": "boolean"
12166 },
12167 "import_enabled": {
12168 "type": "boolean"
12169 },
12170 "search_enabled": {
12171 "type": "boolean"
12172 }
12173 }
12174 },
12175 "GitConfigDto": {
12176 "type": "object",
12177 "required": [
12178 "repo_root",
12179 "objects_root",
12180 "max_blob_size",
12181 "sync_topic",
12182 "sync_concurrency",
12183 "base_url",
12184 "graphql_complexity_limit",
12185 "graphql_introspection"
12186 ],
12187 "properties": {
12188 "base_url": {
12189 "type": "string"
12190 },
12191 "graphql_complexity_limit": {
12192 "type": "integer",
12193 "format": "int64",
12194 "minimum": 0
12195 },
12196 "graphql_introspection": {
12197 "type": "boolean"
12198 },
12199 "max_blob_size": {
12200 "type": "integer",
12201 "format": "int64",
12202 "minimum": 0
12203 },
12204 "objects_root": {
12205 "type": "string"
12206 },
12207 "repo_root": {
12208 "type": "string"
12209 },
12210 "sync_concurrency": {
12211 "type": "integer",
12212 "minimum": 0
12213 },
12214 "sync_topic": {
12215 "type": "string"
12216 }
12217 }
12218 },
12219 "HostEntryDto": {
12220 "type": "object",
12221 "required": [
12222 "name",
12223 "enabled"
12224 ],
12225 "properties": {
12226 "bind_addr": {
12227 "type": [
12228 "string",
12229 "null"
12230 ]
12231 },
12232 "enabled": {
12233 "type": "boolean"
12234 },
12235 "name": {
12236 "type": "string"
12237 },
12238 "port": {
12239 "type": [
12240 "integer",
12241 "null"
12242 ],
12243 "format": "int32",
12244 "minimum": 0
12245 }
12246 }
12247 },
12248 "ImportConfigDto": {
12249 "type": "object",
12250 "required": [
12251 "enabled",
12252 "allowed_hosts",
12253 "allow_insecure_tls",
12254 "max_concurrent_jobs",
12255 "max_repo_bytes",
12256 "max_attempts"
12257 ],
12258 "properties": {
12259 "allow_insecure_tls": {
12260 "type": "boolean"
12261 },
12262 "allowed_hosts": {
12263 "type": "array",
12264 "items": {
12265 "type": "string"
12266 }
12267 },
12268 "enabled": {
12269 "type": "boolean"
12270 },
12271 "max_attempts": {
12272 "type": "integer",
12273 "format": "int32"
12274 },
12275 "max_concurrent_jobs": {
12276 "type": "integer",
12277 "minimum": 0
12278 },
12279 "max_repo_bytes": {
12280 "type": "integer",
12281 "format": "int64",
12282 "minimum": 0
12283 }
12284 }
12285 },
12286 "JobLogDto": {
12287 "type": "object",
12288 "required": [
12289 "source",
12290 "id",
12291 "state",
12292 "created_at"
12293 ],
12294 "properties": {
12295 "created_at": {
12296 "type": "string",
12297 "format": "date-time"
12298 },
12299 "error": {
12300 "type": [
12301 "string",
12302 "null"
12303 ]
12304 },
12305 "id": {
12306 "type": "string",
12307 "format": "uuid"
12308 },
12309 "source": {
12310 "type": "string"
12311 },
12312 "state": {
12313 "type": "string"
12314 },
12315 "updated_at": {
12316 "type": [
12317 "string",
12318 "null"
12319 ],
12320 "format": "date-time"
12321 }
12322 }
12323 },
12324 "JobLogPageDto": {
12325 "type": "object",
12326 "required": [
12327 "items",
12328 "total",
12329 "limit",
12330 "offset"
12331 ],
12332 "properties": {
12333 "items": {
12334 "type": "array",
12335 "items": {
12336 "$ref": "#/components/schemas/JobLogDto"
12337 }
12338 },
12339 "limit": {
12340 "type": "integer",
12341 "format": "int64",
12342 "minimum": 0
12343 },
12344 "offset": {
12345 "type": "integer",
12346 "format": "int64",
12347 "minimum": 0
12348 },
12349 "total": {
12350 "type": "integer",
12351 "format": "int64"
12352 }
12353 }
12354 },
12355 "ListActRunsQuery": {
12356 "type": "object",
12357 "properties": {
12358 "limit": {
12359 "type": [
12360 "integer",
12361 "null"
12362 ],
12363 "format": "int64",
12364 "minimum": 0
12365 },
12366 "offset": {
12367 "type": [
12368 "integer",
12369 "null"
12370 ],
12371 "format": "int64",
12372 "minimum": 0
12373 },
12374 "q": {
12375 "type": [
12376 "string",
12377 "null"
12378 ]
12379 },
12380 "repo_id": {
12381 "type": [
12382 "string",
12383 "null"
12384 ],
12385 "format": "uuid"
12386 },
12387 "state": {
12388 "oneOf": [
12389 {
12390 "type": "null"
12391 },
12392 {
12393 "$ref": "#/components/schemas/WorkflowRunState"
12394 }
12395 ]
12396 }
12397 }
12398 },
12399 "ListReposQuery": {
12400 "type": "object",
12401 "properties": {
12402 "archived": {
12403 "type": [
12404 "boolean",
12405 "null"
12406 ]
12407 },
12408 "limit": {
12409 "type": [
12410 "integer",
12411 "null"
12412 ],
12413 "format": "int64",
12414 "minimum": 0
12415 },
12416 "offset": {
12417 "type": [
12418 "integer",
12419 "null"
12420 ],
12421 "format": "int64",
12422 "minimum": 0
12423 },
12424 "private": {
12425 "type": [
12426 "boolean",
12427 "null"
12428 ]
12429 },
12430 "q": {
12431 "type": [
12432 "string",
12433 "null"
12434 ]
12435 },
12436 "space_id": {
12437 "type": [
12438 "string",
12439 "null"
12440 ],
12441 "format": "uuid"
12442 }
12443 }
12444 },
12445 "NoData": {
12446 "default": null
12447 },
12448 "PageQuery": {
12449 "type": "object",
12450 "properties": {
12451 "limit": {
12452 "type": [
12453 "integer",
12454 "null"
12455 ],
12456 "format": "int64",
12457 "minimum": 0
12458 },
12459 "offset": {
12460 "type": [
12461 "integer",
12462 "null"
12463 ],
12464 "format": "int64",
12465 "minimum": 0
12466 },
12467 "sort": {
12468 "type": [
12469 "string",
12470 "null"
12471 ]
12472 }
12473 }
12474 },
12475 "ProcessInfoDto": {
12476 "type": "object",
12477 "required": [
12478 "version",
12479 "uptime_secs"
12480 ],
12481 "properties": {
12482 "uptime_secs": {
12483 "type": "integer",
12484 "format": "int64",
12485 "minimum": 0
12486 },
12487 "version": {
12488 "type": "string"
12489 }
12490 }
12491 },
12492 "PurgeChatMessagesResp": {
12493 "type": "object",
12494 "required": [
12495 "room_id",
12496 "messages_deleted",
12497 "attachments_deleted",
12498 "threads_deleted"
12499 ],
12500 "properties": {
12501 "attachments_deleted": {
12502 "type": "integer",
12503 "format": "int64",
12504 "minimum": 0
12505 },
12506 "messages_deleted": {
12507 "type": "integer",
12508 "format": "int64",
12509 "minimum": 0
12510 },
12511 "room_id": {
12512 "type": "string",
12513 "format": "uuid"
12514 },
12515 "threads_deleted": {
12516 "type": "integer",
12517 "format": "int64",
12518 "minimum": 0
12519 }
12520 }
12521 },
12522 "QueueActionResp": {
12523 "type": "object",
12524 "required": [
12525 "queue",
12526 "affected"
12527 ],
12528 "properties": {
12529 "affected": {
12530 "type": "integer",
12531 "format": "int64",
12532 "minimum": 0
12533 },
12534 "queue": {
12535 "type": "string"
12536 }
12537 }
12538 },
12539 "QueueSnapshotDto": {
12540 "type": "object",
12541 "required": [
12542 "name",
12543 "kind",
12544 "enabled",
12545 "queued",
12546 "running",
12547 "failed",
12548 "succeeded"
12549 ],
12550 "properties": {
12551 "depth": {
12552 "type": [
12553 "integer",
12554 "null"
12555 ],
12556 "format": "int64"
12557 },
12558 "enabled": {
12559 "type": "boolean"
12560 },
12561 "failed": {
12562 "type": "integer",
12563 "format": "int64"
12564 },
12565 "kind": {
12566 "type": "string"
12567 },
12568 "name": {
12569 "type": "string"
12570 },
12571 "note": {
12572 "type": [
12573 "string",
12574 "null"
12575 ]
12576 },
12577 "queued": {
12578 "type": "integer",
12579 "format": "int64"
12580 },
12581 "running": {
12582 "type": "integer",
12583 "format": "int64"
12584 },
12585 "succeeded": {
12586 "type": "integer",
12587 "format": "int64"
12588 }
12589 }
12590 },
12591 "RedisConfigDto": {
12592 "type": "object",
12593 "required": [
12594 "endpoint",
12595 "mode",
12596 "pool_size"
12597 ],
12598 "properties": {
12599 "database": {
12600 "type": [
12601 "integer",
12602 "null"
12603 ],
12604 "format": "int32",
12605 "minimum": 0
12606 },
12607 "endpoint": {
12608 "type": "string"
12609 },
12610 "mode": {
12611 "type": "string"
12612 },
12613 "pool_size": {
12614 "type": "integer",
12615 "minimum": 0
12616 }
12617 }
12618 },
12619 "RemoveChatMemberResp": {
12620 "type": "object",
12621 "required": [
12622 "room_id",
12623 "user_id",
12624 "removed"
12625 ],
12626 "properties": {
12627 "removed": {
12628 "type": "boolean"
12629 },
12630 "room_id": {
12631 "type": "string",
12632 "format": "uuid"
12633 },
12634 "user_id": {
12635 "type": "string",
12636 "format": "uuid"
12637 }
12638 }
12639 },
12640 "RemoveMemberResp": {
12641 "type": "object",
12642 "required": [
12643 "space_id",
12644 "user_id",
12645 "removed"
12646 ],
12647 "properties": {
12648 "removed": {
12649 "type": "boolean"
12650 },
12651 "space_id": {
12652 "type": "string",
12653 "format": "uuid"
12654 },
12655 "user_id": {
12656 "type": "string",
12657 "format": "uuid"
12658 }
12659 }
12660 },
12661 "ResetAdminPasswordCmd": {
12662 "type": "object",
12663 "required": [
12664 "new_password"
12665 ],
12666 "properties": {
12667 "new_password": {
12668 "type": "string"
12669 }
12670 }
12671 },
12672 "ResetUserPasswordCmd": {
12673 "type": "object",
12674 "required": [
12675 "new_password"
12676 ],
12677 "properties": {
12678 "new_password": {
12679 "type": "string"
12680 }
12681 }
12682 },
12683 "RevokeSessionsResp": {
12684 "type": "object",
12685 "required": [
12686 "revoked"
12687 ],
12688 "properties": {
12689 "revoked": {
12690 "type": "integer",
12691 "format": "int64",
12692 "minimum": 0
12693 }
12694 }
12695 },
12696 "RunnerDto": {
12697 "type": "object",
12698 "required": [
12699 "id",
12700 "name",
12701 "labels",
12702 "capacity",
12703 "capabilities",
12704 "state",
12705 "active_jobs",
12706 "created_at"
12707 ],
12708 "properties": {
12709 "active_jobs": {
12710 "type": "integer",
12711 "format": "int64"
12712 },
12713 "capabilities": {
12714 "type": "array",
12715 "items": {
12716 "type": "string"
12717 }
12718 },
12719 "capacity": {
12720 "type": "integer",
12721 "format": "int32"
12722 },
12723 "created_at": {
12724 "type": "string",
12725 "format": "date-time"
12726 },
12727 "id": {
12728 "type": "string",
12729 "format": "uuid"
12730 },
12731 "labels": {
12732 "type": "array",
12733 "items": {
12734 "type": "string"
12735 }
12736 },
12737 "last_seen_at": {
12738 "type": [
12739 "string",
12740 "null"
12741 ],
12742 "format": "date-time"
12743 },
12744 "name": {
12745 "type": "string"
12746 },
12747 "protocol_version": {
12748 "type": [
12749 "integer",
12750 "null"
12751 ],
12752 "format": "int32"
12753 },
12754 "space_id": {
12755 "type": [
12756 "string",
12757 "null"
12758 ],
12759 "format": "uuid"
12760 },
12761 "state": {
12762 "type": "string"
12763 },
12764 "version": {
12765 "type": [
12766 "string",
12767 "null"
12768 ]
12769 }
12770 }
12771 },
12772 "RunnerPageDto": {
12773 "type": "object",
12774 "required": [
12775 "items",
12776 "total",
12777 "limit",
12778 "offset"
12779 ],
12780 "properties": {
12781 "items": {
12782 "type": "array",
12783 "items": {
12784 "$ref": "#/components/schemas/RunnerDto"
12785 }
12786 },
12787 "limit": {
12788 "type": "integer",
12789 "format": "int64",
12790 "minimum": 0
12791 },
12792 "offset": {
12793 "type": "integer",
12794 "format": "int64",
12795 "minimum": 0
12796 },
12797 "total": {
12798 "type": "integer",
12799 "format": "int64",
12800 "minimum": 0
12801 }
12802 }
12803 },
12804 "RunnerTokenDto": {
12805 "type": "object",
12806 "required": [
12807 "id",
12808 "name",
12809 "single_use",
12810 "created_at"
12811 ],
12812 "properties": {
12813 "created_at": {
12814 "type": "string",
12815 "format": "date-time"
12816 },
12817 "expires_at": {
12818 "type": [
12819 "string",
12820 "null"
12821 ],
12822 "format": "date-time"
12823 },
12824 "id": {
12825 "type": "string",
12826 "format": "uuid"
12827 },
12828 "name": {
12829 "type": "string"
12830 },
12831 "revoked_at": {
12832 "type": [
12833 "string",
12834 "null"
12835 ],
12836 "format": "date-time"
12837 },
12838 "single_use": {
12839 "type": "boolean"
12840 },
12841 "space_id": {
12842 "type": [
12843 "string",
12844 "null"
12845 ],
12846 "format": "uuid"
12847 },
12848 "used_at": {
12849 "type": [
12850 "string",
12851 "null"
12852 ],
12853 "format": "date-time"
12854 }
12855 }
12856 },
12857 "SearchConfigDto": {
12858 "type": "object",
12859 "required": [
12860 "enabled",
12861 "index_prefix",
12862 "max_file_bytes",
12863 "batch_size",
12864 "poll_interval_secs"
12865 ],
12866 "properties": {
12867 "batch_size": {
12868 "type": "integer",
12869 "minimum": 0
12870 },
12871 "enabled": {
12872 "type": "boolean"
12873 },
12874 "index_prefix": {
12875 "type": "string"
12876 },
12877 "max_file_bytes": {
12878 "type": "integer",
12879 "minimum": 0
12880 },
12881 "poll_interval_secs": {
12882 "type": "integer",
12883 "format": "int64",
12884 "minimum": 0
12885 }
12886 }
12887 },
12888 "SessionConfigDto": {
12889 "type": "object",
12890 "required": [
12891 "mode",
12892 "cookie_same_site"
12893 ],
12894 "properties": {
12895 "cookie_domain": {
12896 "type": [
12897 "string",
12898 "null"
12899 ]
12900 },
12901 "cookie_name": {
12902 "type": [
12903 "string",
12904 "null"
12905 ]
12906 },
12907 "cookie_same_site": {
12908 "type": "string"
12909 },
12910 "cookie_secure": {
12911 "type": [
12912 "boolean",
12913 "null"
12914 ]
12915 },
12916 "lifespan_secs": {
12917 "type": [
12918 "integer",
12919 "null"
12920 ],
12921 "format": "int64"
12922 },
12923 "mode": {
12924 "type": "string"
12925 },
12926 "table_name": {
12927 "type": [
12928 "string",
12929 "null"
12930 ]
12931 }
12932 }
12933 },
12934 "StorageCategoryDto": {
12935 "type": "object",
12936 "required": [
12937 "name",
12938 "prefix",
12939 "bytes",
12940 "objects"
12941 ],
12942 "properties": {
12943 "bytes": {
12944 "type": "integer",
12945 "format": "int64",
12946 "minimum": 0
12947 },
12948 "name": {
12949 "type": "string"
12950 },
12951 "objects": {
12952 "type": "integer",
12953 "format": "int64",
12954 "minimum": 0
12955 },
12956 "prefix": {
12957 "type": "string"
12958 }
12959 }
12960 },
12961 "StorageConfigDto": {
12962 "type": "object",
12963 "properties": {
12964 "bucket": {
12965 "type": [
12966 "string",
12967 "null"
12968 ]
12969 },
12970 "path_style": {
12971 "type": [
12972 "boolean",
12973 "null"
12974 ]
12975 },
12976 "region": {
12977 "type": [
12978 "string",
12979 "null"
12980 ]
12981 }
12982 }
12983 },
12984 "StorageObjectDto": {
12985 "type": "object",
12986 "required": [
12987 "key",
12988 "size"
12989 ],
12990 "properties": {
12991 "etag": {
12992 "type": [
12993 "string",
12994 "null"
12995 ]
12996 },
12997 "key": {
12998 "type": "string"
12999 },
13000 "last_modified": {},
13001 "size": {
13002 "type": "integer",
13003 "format": "int64",
13004 "minimum": 0
13005 }
13006 }
13007 },
13008 "StorageObjectPageDto": {
13009 "type": "object",
13010 "required": [
13011 "prefix",
13012 "items"
13013 ],
13014 "properties": {
13015 "items": {
13016 "type": "array",
13017 "items": {
13018 "$ref": "#/components/schemas/StorageObjectDto"
13019 }
13020 },
13021 "next_token": {
13022 "type": [
13023 "string",
13024 "null"
13025 ]
13026 },
13027 "prefix": {
13028 "type": "string"
13029 }
13030 }
13031 },
13032 "StorageOverviewDto": {
13033 "type": "object",
13034 "required": [
13035 "bucket",
13036 "total_bytes",
13037 "total_objects",
13038 "categories",
13039 "generated_at",
13040 "cached"
13041 ],
13042 "properties": {
13043 "bucket": {
13044 "type": "string"
13045 },
13046 "cached": {
13047 "type": "boolean"
13048 },
13049 "categories": {
13050 "type": "array",
13051 "items": {
13052 "$ref": "#/components/schemas/StorageCategoryDto"
13053 }
13054 },
13055 "generated_at": {
13056 "type": "string",
13057 "format": "date-time"
13058 },
13059 "total_bytes": {
13060 "type": "integer",
13061 "format": "int64",
13062 "minimum": 0
13063 },
13064 "total_objects": {
13065 "type": "integer",
13066 "format": "int64",
13067 "minimum": 0
13068 }
13069 }
13070 },
13071 "SuspendUserCmd": {
13072 "type": "object",
13073 "required": [
13074 "suspension_type"
13075 ],
13076 "properties": {
13077 "ends_at": {
13078 "type": [
13079 "string",
13080 "null"
13081 ],
13082 "format": "date-time"
13083 },
13084 "reason": {
13085 "type": [
13086 "string",
13087 "null"
13088 ]
13089 },
13090 "suspension_type": {
13091 "$ref": "#/components/schemas/SuspensionType"
13092 }
13093 }
13094 },
13095 "SuspensionType": {
13096 "type": "string",
13097 "enum": [
13098 "temporary",
13099 "permanent"
13100 ]
13101 },
13102 "SystemConfigDto": {
13103 "type": "object",
13104 "required": [
13105 "version",
13106 "hosts",
13107 "admin",
13108 "features",
13109 "search",
13110 "import",
13111 "git",
13112 "storage",
13113 "database",
13114 "redis",
13115 "session",
13116 "email",
13117 "generated_at"
13118 ],
13119 "properties": {
13120 "admin": {
13121 "$ref": "#/components/schemas/AdminEndpointDto"
13122 },
13123 "database": {
13124 "$ref": "#/components/schemas/DatabaseConfigDto"
13125 },
13126 "email": {
13127 "$ref": "#/components/schemas/EmailConfigDto"
13128 },
13129 "features": {
13130 "$ref": "#/components/schemas/FeaturesDto"
13131 },
13132 "generated_at": {
13133 "type": "string",
13134 "format": "date-time"
13135 },
13136 "git": {
13137 "$ref": "#/components/schemas/GitConfigDto"
13138 },
13139 "hosts": {
13140 "type": "array",
13141 "items": {
13142 "$ref": "#/components/schemas/HostEntryDto"
13143 }
13144 },
13145 "import": {
13146 "$ref": "#/components/schemas/ImportConfigDto"
13147 },
13148 "redis": {
13149 "$ref": "#/components/schemas/RedisConfigDto"
13150 },
13151 "search": {
13152 "$ref": "#/components/schemas/SearchConfigDto"
13153 },
13154 "session": {
13155 "$ref": "#/components/schemas/SessionConfigDto"
13156 },
13157 "storage": {
13158 "$ref": "#/components/schemas/StorageConfigDto"
13159 },
13160 "version": {
13161 "type": "string"
13162 }
13163 }
13164 },
13165 "SystemStatusDto": {
13166 "type": "object",
13167 "required": [
13168 "process",
13169 "dependencies",
13170 "features",
13171 "counts",
13172 "queues",
13173 "recent_failures",
13174 "generated_at"
13175 ],
13176 "properties": {
13177 "counts": {
13178 "$ref": "#/components/schemas/CountsDto"
13179 },
13180 "dependencies": {
13181 "$ref": "#/components/schemas/DependenciesDto"
13182 },
13183 "features": {
13184 "$ref": "#/components/schemas/FeaturesDto"
13185 },
13186 "generated_at": {
13187 "type": "string",
13188 "format": "date-time"
13189 },
13190 "process": {
13191 "$ref": "#/components/schemas/ProcessInfoDto"
13192 },
13193 "queues": {
13194 "type": "array",
13195 "items": {
13196 "$ref": "#/components/schemas/QueueSnapshotDto"
13197 }
13198 },
13199 "recent_failures": {
13200 "type": "array",
13201 "items": {
13202 "$ref": "#/components/schemas/JobLogDto"
13203 }
13204 }
13205 }
13206 },
13207 "TaskActionResp": {
13208 "type": "object",
13209 "required": [
13210 "source",
13211 "id",
13212 "state"
13213 ],
13214 "properties": {
13215 "id": {
13216 "type": "string",
13217 "format": "uuid"
13218 },
13219 "source": {
13220 "type": "string"
13221 },
13222 "state": {
13223 "type": "string"
13224 }
13225 }
13226 },
13227 "TaskDetailDto": {
13228 "type": "object",
13229 "required": [
13230 "task",
13231 "detail"
13232 ],
13233 "properties": {
13234 "detail": {},
13235 "task": {
13236 "$ref": "#/components/schemas/TaskDto"
13237 }
13238 }
13239 },
13240 "TaskDto": {
13241 "type": "object",
13242 "required": [
13243 "id",
13244 "source",
13245 "title",
13246 "state",
13247 "created_at"
13248 ],
13249 "properties": {
13250 "created_at": {
13251 "type": "string",
13252 "format": "date-time"
13253 },
13254 "finished_at": {
13255 "type": [
13256 "string",
13257 "null"
13258 ],
13259 "format": "date-time"
13260 },
13261 "id": {
13262 "type": "string",
13263 "format": "uuid"
13264 },
13265 "last_error": {
13266 "type": [
13267 "string",
13268 "null"
13269 ]
13270 },
13271 "source": {
13272 "type": "string"
13273 },
13274 "state": {
13275 "type": "string"
13276 },
13277 "title": {
13278 "type": "string"
13279 },
13280 "updated_at": {
13281 "type": [
13282 "string",
13283 "null"
13284 ],
13285 "format": "date-time"
13286 }
13287 }
13288 },
13289 "TaskPageDto": {
13290 "type": "object",
13291 "required": [
13292 "items",
13293 "total",
13294 "limit",
13295 "offset"
13296 ],
13297 "properties": {
13298 "items": {
13299 "type": "array",
13300 "items": {
13301 "$ref": "#/components/schemas/TaskDto"
13302 }
13303 },
13304 "limit": {
13305 "type": "integer",
13306 "format": "int64",
13307 "minimum": 0
13308 },
13309 "offset": {
13310 "type": "integer",
13311 "format": "int64",
13312 "minimum": 0
13313 },
13314 "total": {
13315 "type": "integer",
13316 "format": "int64"
13317 }
13318 }
13319 },
13320 "TaskSourceStatDto": {
13321 "type": "object",
13322 "required": [
13323 "source",
13324 "queued",
13325 "running",
13326 "succeeded",
13327 "failed"
13328 ],
13329 "properties": {
13330 "failed": {
13331 "type": "integer",
13332 "format": "int64"
13333 },
13334 "queued": {
13335 "type": "integer",
13336 "format": "int64"
13337 },
13338 "running": {
13339 "type": "integer",
13340 "format": "int64"
13341 },
13342 "source": {
13343 "type": "string"
13344 },
13345 "succeeded": {
13346 "type": "integer",
13347 "format": "int64"
13348 }
13349 }
13350 },
13351 "TaskStatsDto": {
13352 "type": "object",
13353 "required": [
13354 "sources",
13355 "total",
13356 "generated_at"
13357 ],
13358 "properties": {
13359 "generated_at": {
13360 "type": "string",
13361 "format": "date-time"
13362 },
13363 "sources": {
13364 "type": "array",
13365 "items": {
13366 "$ref": "#/components/schemas/TaskSourceStatDto"
13367 }
13368 },
13369 "total": {
13370 "type": "integer",
13371 "format": "int64"
13372 }
13373 }
13374 },
13375 "TransferSpaceCmd": {
13376 "type": "object",
13377 "required": [
13378 "new_owner_id"
13379 ],
13380 "properties": {
13381 "new_owner_id": {
13382 "type": "string",
13383 "format": "uuid"
13384 }
13385 }
13386 },
13387 "TrendPointDto": {
13388 "type": "object",
13389 "required": [
13390 "date",
13391 "users",
13392 "spaces",
13393 "repos"
13394 ],
13395 "properties": {
13396 "date": {
13397 "type": "string"
13398 },
13399 "repos": {
13400 "type": "integer",
13401 "format": "int64"
13402 },
13403 "spaces": {
13404 "type": "integer",
13405 "format": "int64"
13406 },
13407 "users": {
13408 "type": "integer",
13409 "format": "int64"
13410 }
13411 }
13412 },
13413 "UpdateAdminCmd": {
13414 "type": "object",
13415 "properties": {
13416 "display_name": {
13417 "type": [
13418 "string",
13419 "null"
13420 ]
13421 },
13422 "is_active": {
13423 "type": [
13424 "boolean",
13425 "null"
13426 ]
13427 },
13428 "role": {
13429 "oneOf": [
13430 {
13431 "type": "null"
13432 },
13433 {
13434 "$ref": "#/components/schemas/AdminRole"
13435 }
13436 ]
13437 }
13438 }
13439 },
13440 "UpdateChatRoomCmd": {
13441 "type": "object",
13442 "properties": {
13443 "is_active": {
13444 "type": [
13445 "boolean",
13446 "null"
13447 ]
13448 },
13449 "is_private": {
13450 "type": [
13451 "boolean",
13452 "null"
13453 ]
13454 },
13455 "name": {
13456 "type": [
13457 "string",
13458 "null"
13459 ]
13460 },
13461 "nsfw": {
13462 "type": [
13463 "boolean",
13464 "null"
13465 ]
13466 },
13467 "topic": {
13468 "type": [
13469 "string",
13470 "null"
13471 ]
13472 }
13473 }
13474 },
13475 "UpdateRepoCmd": {
13476 "type": "object",
13477 "properties": {
13478 "default_branch": {
13479 "type": [
13480 "string",
13481 "null"
13482 ]
13483 },
13484 "description": {
13485 "type": [
13486 "string",
13487 "null"
13488 ]
13489 },
13490 "enable_lfs": {
13491 "type": [
13492 "boolean",
13493 "null"
13494 ]
13495 },
13496 "is_archived": {
13497 "type": [
13498 "boolean",
13499 "null"
13500 ]
13501 },
13502 "is_private": {
13503 "type": [
13504 "boolean",
13505 "null"
13506 ]
13507 },
13508 "storage_limit_size": {
13509 "type": [
13510 "integer",
13511 "null"
13512 ],
13513 "format": "int64"
13514 }
13515 }
13516 },
13517 "UpdateRunnerCmd": {
13518 "type": "object",
13519 "properties": {
13520 "capacity": {
13521 "type": [
13522 "integer",
13523 "null"
13524 ],
13525 "format": "int32"
13526 },
13527 "enabled": {
13528 "type": [
13529 "boolean",
13530 "null"
13531 ]
13532 },
13533 "labels": {
13534 "type": [
13535 "array",
13536 "null"
13537 ],
13538 "items": {
13539 "type": "string"
13540 }
13541 }
13542 }
13543 },
13544 "UpdateSpaceCmd": {
13545 "type": "object",
13546 "properties": {
13547 "allow_invite": {
13548 "type": [
13549 "boolean",
13550 "null"
13551 ]
13552 },
13553 "allow_join": {
13554 "type": [
13555 "boolean",
13556 "null"
13557 ]
13558 },
13559 "description": {
13560 "type": [
13561 "string",
13562 "null"
13563 ]
13564 },
13565 "is_active": {
13566 "type": [
13567 "boolean",
13568 "null"
13569 ]
13570 },
13571 "is_private": {
13572 "type": [
13573 "boolean",
13574 "null"
13575 ]
13576 },
13577 "member_must_enable_2fa": {
13578 "type": [
13579 "boolean",
13580 "null"
13581 ]
13582 },
13583 "name": {
13584 "type": [
13585 "string",
13586 "null"
13587 ]
13588 }
13589 }
13590 },
13591 "UpdateUserCmd": {
13592 "type": "object",
13593 "properties": {
13594 "display_name": {
13595 "type": [
13596 "string",
13597 "null"
13598 ]
13599 },
13600 "is_active": {
13601 "type": [
13602 "boolean",
13603 "null"
13604 ]
13605 },
13606 "is_restricted": {
13607 "type": [
13608 "boolean",
13609 "null"
13610 ]
13611 },
13612 "prohibit_login": {
13613 "type": [
13614 "boolean",
13615 "null"
13616 ]
13617 }
13618 }
13619 },
13620 "UpsertEnvironmentAdminCmd": {
13621 "type": "object",
13622 "required": [
13623 "name"
13624 ],
13625 "properties": {
13626 "description": {
13627 "type": [
13628 "string",
13629 "null"
13630 ]
13631 },
13632 "name": {
13633 "type": "string"
13634 },
13635 "required_labels": {
13636 "type": "array",
13637 "items": {
13638 "type": "string"
13639 }
13640 }
13641 }
13642 },
13643 "UpsertEnvironmentSecretCmd": {
13644 "type": "object",
13645 "required": [
13646 "name",
13647 "value"
13648 ],
13649 "properties": {
13650 "name": {
13651 "type": "string"
13652 },
13653 "value": {
13654 "type": "string"
13655 }
13656 }
13657 },
13658 "WorkflowRunState": {
13659 "type": "string",
13660 "enum": [
13661 "queued",
13662 "running",
13663 "success",
13664 "failure",
13665 "cancel_requested",
13666 "cancelled"
13667 ]
13668 }
13669 },
13670 "securitySchemes": {
13671 "admin_session_cookie": {
13672 "type": "apiKey",
13673 "in": "cookie",
13674 "name": "gitdata_admin_session"
13675 }
13676 }
13677 },
13678 "security": [
13679 {
13680 "admin_session_cookie": []
13681 }
13682 ]
13683}
No newline at end of file