summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-03-06 23:23:54 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-03-06 23:23:54 +0900
commitf7e9725e59dd241b11fda729cc5c96a64d7e2545 (patch)
treeca09dd961685d789efa53dad8b6eba240b643eac /src
parentMerge branch 'develop' (diff)
parent12.74.0 (diff)
downloadmisskey-f7e9725e59dd241b11fda729cc5c96a64d7e2545.tar.gz
misskey-f7e9725e59dd241b11fda729cc5c96a64d7e2545.tar.bz2
misskey-f7e9725e59dd241b11fda729cc5c96a64d7e2545.zip
Merge branch 'develop'
Diffstat (limited to 'src')
-rw-r--r--src/client/assets/manifest.json4
-rw-r--r--src/client/assets/room/furnitures/banknote/banknote.blendbin716076 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/banknote/banknote.glbbin48988 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/banknote/tex.pngbin43794 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/bed/bed.blendbin573584 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/bed/bed.glbbin8944 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/bin/bin.blendbin695512 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/bin/bin.glbbin22140 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/book/book.blendbin511864 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/book/book.glbbin4304 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/book2/barcode.pngbin3505 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/book2/book2.blendbin521456 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/book2/book2.glbbin82920 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/book2/texture.afdesignbin875434 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/book2/texture.pngbin61019 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/book2/uv.pngbin8611 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box/cardboard-box.blendbin515036 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box/cardboard-box.glbbin4568 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.blendbin545788 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.glbbin24084 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box2/texture.pngbin16879 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box2/uv.pngbin4630 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.blendbin547868 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.glbbin23668 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box3/texture.pngbin16204 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box3/texture.xcfbin242066 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cardboard-box3/uv.pngbin3598 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.blendbin481784 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.glbbin4956 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/chair/chair.blendbin500696 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/chair/chair.glbbin4252 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/chair2/chair2.blendbin523036 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/chair2/chair2.glbbin6140 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/color-box/color-box.blendbin631168 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/color-box/color-box.glbbin7492 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/corkboard/corkboard.blendbin565404 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/corkboard/corkboard.glbbin7180 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cube/cube.blendbin646184 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cube/cube.glbbin188392 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cup-noodle/cup-noodle.blendbin855164 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cup-noodle/cup-noodle.glbbin318332 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/cup-noodle/noodle.pngbin297154 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/desk/desk.blendbin541980 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/desk/desk.glbbin10184 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/doll-ai/doll-ai.blendbin1155028 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/doll-ai/doll-ai.glbbin112160 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/doll-ai/doll_ai_tex.pngbin10712 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/energy-drink/energy-drink.blendbin724764 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/energy-drink/energy-drink.glbbin145836 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/energy-drink/texture.afdesignbin824566 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/energy-drink/texture.pngbin127510 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/energy-drink/uv.pngbin22142 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/eraser/cover.pngbin8336 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/eraser/cover.psdbin219123 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/eraser/eraser-uv.pngbin11164 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/eraser/eraser.blendbin527996 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/eraser/eraser.glbbin15748 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/facial-tissue/facial-tissue-uv.pngbin4470 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/facial-tissue/facial-tissue.blendbin533220 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/facial-tissue/facial-tissue.glbbin8332 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/facial-tissue/facial-tissue.pngbin688 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/facial-tissue/facial-tissue.psdbin111968 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/fan/fan.blendbin772732 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/fan/fan.glbbin51612 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/holo-display/holo-display.blendbin788456 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/holo-display/holo-display.glbbin148928 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/holo-display/ray-uv.pngbin20901 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/holo-display/ray.pngbin104293 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/keyboard/keyboard.blendbin1005588 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/keyboard/keyboard.glbbin132360 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/low-table/low-table.blendbin497336 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/low-table/low-table.glbbin2364 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/mat/mat.blendbin489304 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/mat/mat.glbbin1700 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/milk/milk-uv.pngbin16577 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/milk/milk.blendbin539836 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/milk/milk.glbbin8456 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/milk/milk.pngbin658 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/milk/milk.psdbin125415 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/monitor/monitor.blendbin586820 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/monitor/monitor.glbbin35300 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/monitor/monitor.psdbin3692204 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/monitor/screen-uv.pngbin1495 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/monitor/screen.jpgbin24842 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/moon/moon.blendbin725536 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/moon/moon.glbbin122112 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/moon/moon.jpgbin87151 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/mousepad/mousepad.blendbin495008 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/mousepad/mousepad.glbbin4360 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pc/motherboard-uv.pngbin2920 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pc/motherboard-uv.psdbin7131432 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pc/motherboard.jpgbin64600 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pc/pc.blendbin818152 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pc/pc.glbbin103620 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pencil/pencil.blendbin683032 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pencil/pencil.glbbin7788 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/photoframe/photo-uv.pngbin2639 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/photoframe/photo.jpgbin30500 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/photoframe/photoframe.blendbin551416 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/photoframe/photoframe.glbbin37612 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/piano/piano.blendbin713228 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/piano/piano.glbbin73320 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pinguin/pinguin.blendbin778976 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pinguin/pinguin.glbbin60172 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/plant/plant-soil-uv.pngbin4509 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/plant/plant-soil.pngbin10852 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/plant/plant-soil.psdbin390188 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/plant/plant.blendbin604488 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/plant/plant.glbbin27664 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/plant2/plant2.blendbin1060816 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/plant2/plant2.glbbin133212 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/plant2/soil.pngbin10852 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/poster-h/poster-h.blendbin667604 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/poster-h/poster-h.glbbin1280 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/poster-h/uv.pngbin3786 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/poster-v/poster-v.blendbin650740 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/poster-v/poster-v.glbbin1280 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/poster-v/uv.pngbin3795 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pudding/pudding.blendbin694784 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/pudding/pudding.glbbin10612 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/rubik-cube/rubik-cube.blendbin745960 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/rubik-cube/rubik-cube.glbbin67688 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/server/rack-uv.pngbin6705 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/server/rack.pngbin7046 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/server/server.blendbin684372 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/server/server.glbbin149480 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/server/server.pngbin116866 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/server/uv.pngbin4012 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/sofa/sofa.blendbin711488 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/sofa/sofa.glbbin37656 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/spiral/spiral.blendbin1241416 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/spiral/spiral.glbbin251788 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/tv/screen-uv.pngbin3792 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/tv/tv.blendbin587640 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/tv/tv.glbbin8580 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/wall-clock/wall-clock.blendbin574128 -> 0 bytes
-rw-r--r--src/client/assets/room/furnitures/wall-clock/wall-clock.glbbin47848 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/default/default.blendbin618364 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/default/default.glbbin12280 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/washitsu/husuma-uv.pngbin4037 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/washitsu/husuma.pngbin2539 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/washitsu/tatami-single1600.pngbin1173343 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/washitsu/tatami-uv.pngbin4075 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/washitsu/tatami.afdesignbin2501804 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/washitsu/tatami.pngbin313722 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/washitsu/washitsu.blendbin664000 -> 0 bytes
-rw-r--r--src/client/assets/room/rooms/washitsu/washitsu.glbbin415180 -> 0 bytes
-rw-r--r--src/client/assets/sounds/aisha/1.mp3bin34480 -> 0 bytes
-rw-r--r--src/client/assets/sounds/aisha/2.mp3bin24031 -> 0 bytes
-rw-r--r--src/client/assets/sounds/aisha/3.mp3bin29256 -> 0 bytes
-rw-r--r--src/client/assets/sounds/noizenecio/kick_gaba.mp3bin18866 -> 0 bytes
-rw-r--r--src/client/assets/sounds/noizenecio/kick_gaba2.mp3bin27144 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/down.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/kick.mp3bin15672 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/pirori-square-wet.mp3bin139200 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/pirori-wet.mp3bin139200 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/pirori.mp3bin19200 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/poi1.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/poi2.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/pope1.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/pope2.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/popo.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/reverved.mp3bin276480 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/ryukyu.mp3bin139200 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/snare.mp3bin26121 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/square-pico.mp3bin19200 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/triple.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/up.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/assets/sounds/syuilo/waon.mp3bin18240 -> 0 bytes
-rw-r--r--src/client/components/emoji-picker-dialog.vue4
-rw-r--r--src/client/components/emoji-picker.vue1
-rw-r--r--src/client/components/media-video.vue30
-rw-r--r--src/client/components/note-detailed.vue3
-rw-r--r--src/client/components/note.vue3
-rw-r--r--src/client/components/ui/modal.vue93
-rw-r--r--src/client/init.ts18
-rw-r--r--src/client/os.ts32
-rw-r--r--src/client/pages/settings/theme.manage.vue2
-rw-r--r--src/client/pages/v.vue2
-rw-r--r--src/client/pages/welcome.entrance.a.vue27
-rw-r--r--src/client/pages/welcome.entrance.b.vue2
-rw-r--r--src/client/pages/welcome.entrance.c.vue2
-rw-r--r--src/client/scripts/reaction-picker.ts41
-rw-r--r--src/client/scripts/room/room.ts4
-rw-r--r--src/client/scripts/sound.ts2
-rw-r--r--src/client/store.ts2
-rw-r--r--src/client/ui/chat/note.vue3
-rw-r--r--src/models/repositories/antenna.ts70
-rw-r--r--src/models/repositories/app.ts30
-rw-r--r--src/models/repositories/drive-file.ts62
-rw-r--r--src/models/repositories/federation-instance.ts106
-rw-r--r--src/models/repositories/queue.ts30
-rw-r--r--src/models/repositories/user.ts263
-rw-r--r--src/server/api/endpoints/admin/abuse-user-reports.ts73
-rw-r--r--src/server/api/endpoints/admin/accounts/create.ts18
-rw-r--r--src/server/api/endpoints/admin/announcements/create.ts46
-rw-r--r--src/server/api/endpoints/admin/announcements/delete.ts5
-rw-r--r--src/server/api/endpoints/admin/announcements/list.ts55
-rw-r--r--src/server/api/endpoints/admin/announcements/update.ts5
-rw-r--r--src/server/api/endpoints/admin/delete-all-files-of-a-user.ts5
-rw-r--r--src/server/api/endpoints/admin/delete-logs.ts5
-rw-r--r--src/server/api/endpoints/admin/drive/clean-remote-files.ts5
-rw-r--r--src/server/api/endpoints/admin/drive/cleanup.ts5
-rw-r--r--src/server/api/endpoints/admin/drive/files.ts15
-rw-r--r--src/server/api/endpoints/admin/drive/show-file.ts148
-rw-r--r--src/server/api/endpoints/admin/emoji/copy.ts18
-rw-r--r--src/server/api/endpoints/admin/emoji/list-remote.ts49
-rw-r--r--src/server/api/endpoints/admin/emoji/list.ts49
-rw-r--r--src/server/api/endpoints/admin/federation/delete-all-files.ts5
-rw-r--r--src/server/api/endpoints/admin/federation/remove-all-following.ts5
-rw-r--r--src/server/api/endpoints/admin/federation/update-instance.ts5
-rw-r--r--src/server/api/endpoints/admin/get-table-stats.ts12
-rw-r--r--src/server/api/endpoints/admin/invite.ts20
-rw-r--r--src/server/api/endpoints/admin/logs.ts59
-rw-r--r--src/server/api/endpoints/admin/promo/create.ts5
-rw-r--r--src/server/api/endpoints/admin/queue/clear.ts5
-rw-r--r--src/server/api/endpoints/admin/queue/deliver-delayed.ts30
-rw-r--r--src/server/api/endpoints/admin/queue/inbox-delayed.ts30
-rw-r--r--src/server/api/endpoints/admin/queue/jobs.ts37
-rw-r--r--src/server/api/endpoints/admin/queue/stats.ts26
-rw-r--r--src/server/api/endpoints/admin/relays/add.ts30
-rw-r--r--src/server/api/endpoints/admin/relays/list.ts34
-rw-r--r--src/server/api/endpoints/admin/relays/remove.ts3
-rw-r--r--src/server/api/endpoints/admin/reset-password.ts14
-rw-r--r--src/server/api/endpoints/admin/resolve-abuse-user-report.ts5
-rw-r--r--src/server/api/endpoints/admin/resync-chart.ts5
-rw-r--r--src/server/api/endpoints/admin/send-email.ts5
-rw-r--r--src/server/api/endpoints/admin/server-info.ts88
-rw-r--r--src/server/api/endpoints/admin/show-moderation-logs.ts44
-rw-r--r--src/server/api/endpoints/admin/show-user.ts146
-rw-r--r--src/server/api/endpoints/admin/show-users.ts17
-rw-r--r--src/server/api/endpoints/admin/vacuum.ts5
-rw-r--r--src/server/api/endpoints/announcements.ts55
-rw-r--r--src/server/api/endpoints/antennas/create.ts11
-rw-r--r--src/server/api/endpoints/antennas/delete.ts5
-rw-r--r--src/server/api/endpoints/antennas/list.ts15
-rw-r--r--src/server/api/endpoints/antennas/notes.ts15
-rw-r--r--src/server/api/endpoints/antennas/show.ts11
-rw-r--r--src/server/api/endpoints/antennas/update.ts11
-rw-r--r--src/server/api/endpoints/ap/show.ts19
-rw-r--r--src/server/api/endpoints/app/show.ts6
-rw-r--r--src/server/api/endpoints/auth/session/show.ts21
-rw-r--r--src/server/api/endpoints/blocking/create.ts6
-rw-r--r--src/server/api/endpoints/blocking/delete.ts70
-rw-r--r--src/server/api/endpoints/clips/create.ts6
-rw-r--r--src/server/api/endpoints/clips/list.ts10
-rw-r--r--src/server/api/endpoints/clips/notes.ts10
-rw-r--r--src/server/api/endpoints/clips/show.ts6
-rw-r--r--src/server/api/endpoints/clips/update.ts6
-rw-r--r--src/server/api/endpoints/drive/files/update.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/create.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/update.ts6
-rw-r--r--src/server/api/endpoints/endpoints.ts20
-rw-r--r--src/server/api/endpoints/federation/instances.ts11
-rw-r--r--src/server/api/endpoints/federation/show-instance.ts7
-rw-r--r--src/server/api/endpoints/following/create.ts6
-rw-r--r--src/server/api/endpoints/following/delete.ts6
-rw-r--r--src/server/api/endpoints/following/requests/cancel.ts6
-rw-r--r--src/server/api/endpoints/following/requests/list.ts28
-rw-r--r--src/server/api/endpoints/games/reversi/games.ts107
-rw-r--r--src/server/api/endpoints/games/reversi/games/show.ts119
-rw-r--r--src/server/api/endpoints/games/reversi/invitations.ts43
-rw-r--r--src/server/api/endpoints/i/get-word-muted-notes-count.ts11
-rw-r--r--src/server/api/endpoints/i/page-likes.ts17
-rw-r--r--src/server/api/endpoints/i/pages.ts10
-rw-r--r--src/server/api/endpoints/i/pin.ts6
-rw-r--r--src/server/api/endpoints/i/read-announcement.ts5
-rw-r--r--src/server/api/endpoints/i/unpin.ts6
-rw-r--r--src/server/api/endpoints/i/update.ts6
-rw-r--r--src/server/api/endpoints/i/user-group-invites.ts21
-rw-r--r--src/server/api/endpoints/meta.ts378
-rw-r--r--src/server/api/endpoints/miauth/gen-token.ts11
-rw-r--r--src/server/api/endpoints/my/apps.ts49
-rw-r--r--src/server/api/endpoints/notes/polls/recommendation.ts10
-rw-r--r--src/server/api/endpoints/notes/state.ts15
-rw-r--r--src/server/api/endpoints/notifications/create.ts4
-rw-r--r--src/server/api/endpoints/promo/read.ts5
-rw-r--r--src/server/api/endpoints/room/show.ts79
-rw-r--r--src/server/api/endpoints/room/update.ts1
-rw-r--r--src/server/api/endpoints/stats.ts9
-rw-r--r--src/server/api/endpoints/sw/register.ts16
-rw-r--r--src/server/api/endpoints/username/available.ts17
-rw-r--r--src/server/api/endpoints/users.ts7
-rw-r--r--src/server/api/endpoints/users/lists/update.ts6
-rw-r--r--src/server/api/endpoints/users/relation.ts87
-rw-r--r--src/server/api/openapi/gen-spec.ts4
-rw-r--r--src/server/api/openapi/schemas.ts8
-rw-r--r--src/server/web/index.ts30
-rw-r--r--src/server/web/manifest.ts2
-rw-r--r--src/server/web/style.css26
-rw-r--r--src/server/web/views/base.pug6
-rw-r--r--src/server/web/views/info.pug2
-rw-r--r--src/services/send-email.ts2
293 files changed, 3244 insertions, 238 deletions
diff --git a/src/client/assets/manifest.json b/src/client/assets/manifest.json
index f5a1d47a8a..48030a2980 100644
--- a/src/client/assets/manifest.json
+++ b/src/client/assets/manifest.json
@@ -7,12 +7,12 @@
"theme_color": "#86b300",
"icons": [
{
- "src": "/assets/icons/192.png",
+ "src": "/static-assets/icons/192.png",
"sizes": "192x192",
"type": "image/png"
},
{
- "src": "/assets/icons/512.png",
+ "src": "/static-assets/icons/512.png",
"sizes": "512x512",
"type": "image/png"
}
diff --git a/src/client/assets/room/furnitures/banknote/banknote.blend b/src/client/assets/room/furnitures/banknote/banknote.blend
deleted file mode 100644
index 60b1968a29..0000000000
--- a/src/client/assets/room/furnitures/banknote/banknote.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/banknote/banknote.glb b/src/client/assets/room/furnitures/banknote/banknote.glb
deleted file mode 100644
index f4ef0b91e7..0000000000
--- a/src/client/assets/room/furnitures/banknote/banknote.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/banknote/tex.png b/src/client/assets/room/furnitures/banknote/tex.png
deleted file mode 100644
index 9106dc1457..0000000000
--- a/src/client/assets/room/furnitures/banknote/tex.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/bed/bed.blend b/src/client/assets/room/furnitures/bed/bed.blend
deleted file mode 100644
index 731df76d0c..0000000000
--- a/src/client/assets/room/furnitures/bed/bed.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/bed/bed.glb b/src/client/assets/room/furnitures/bed/bed.glb
deleted file mode 100644
index f35ecb9ef4..0000000000
--- a/src/client/assets/room/furnitures/bed/bed.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/bin/bin.blend b/src/client/assets/room/furnitures/bin/bin.blend
deleted file mode 100644
index 8d459a0869..0000000000
--- a/src/client/assets/room/furnitures/bin/bin.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/bin/bin.glb b/src/client/assets/room/furnitures/bin/bin.glb
deleted file mode 100644
index b45f203802..0000000000
--- a/src/client/assets/room/furnitures/bin/bin.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/book/book.blend b/src/client/assets/room/furnitures/book/book.blend
deleted file mode 100644
index 0d4899d4ae..0000000000
--- a/src/client/assets/room/furnitures/book/book.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/book/book.glb b/src/client/assets/room/furnitures/book/book.glb
deleted file mode 100644
index 546893da06..0000000000
--- a/src/client/assets/room/furnitures/book/book.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/book2/barcode.png b/src/client/assets/room/furnitures/book2/barcode.png
deleted file mode 100644
index 37cfe5add3..0000000000
--- a/src/client/assets/room/furnitures/book2/barcode.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/book2/book2.blend b/src/client/assets/room/furnitures/book2/book2.blend
deleted file mode 100644
index e0fdb48101..0000000000
--- a/src/client/assets/room/furnitures/book2/book2.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/book2/book2.glb b/src/client/assets/room/furnitures/book2/book2.glb
deleted file mode 100644
index 2b26402f8c..0000000000
--- a/src/client/assets/room/furnitures/book2/book2.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/book2/texture.afdesign b/src/client/assets/room/furnitures/book2/texture.afdesign
deleted file mode 100644
index b63771607a..0000000000
--- a/src/client/assets/room/furnitures/book2/texture.afdesign
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/book2/texture.png b/src/client/assets/room/furnitures/book2/texture.png
deleted file mode 100644
index 5aa84f0340..0000000000
--- a/src/client/assets/room/furnitures/book2/texture.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/book2/uv.png b/src/client/assets/room/furnitures/book2/uv.png
deleted file mode 100644
index 61c4fb0400..0000000000
--- a/src/client/assets/room/furnitures/book2/uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box/cardboard-box.blend b/src/client/assets/room/furnitures/cardboard-box/cardboard-box.blend
deleted file mode 100644
index 3a528de32a..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box/cardboard-box.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box/cardboard-box.glb b/src/client/assets/room/furnitures/cardboard-box/cardboard-box.glb
deleted file mode 100644
index bed372e94f..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box/cardboard-box.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.blend b/src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.blend
deleted file mode 100644
index 5f146267ac..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.glb b/src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.glb
deleted file mode 100644
index 85fcb5c0b6..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box2/cardboard-box2.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box2/texture.png b/src/client/assets/room/furnitures/cardboard-box2/texture.png
deleted file mode 100644
index e498d8f65b..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box2/texture.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box2/uv.png b/src/client/assets/room/furnitures/cardboard-box2/uv.png
deleted file mode 100644
index d547843ee0..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box2/uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.blend b/src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.blend
deleted file mode 100644
index 00681a3cfd..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.glb b/src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.glb
deleted file mode 100644
index 1ef0427689..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box3/cardboard-box3.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box3/texture.png b/src/client/assets/room/furnitures/cardboard-box3/texture.png
deleted file mode 100644
index 56c914cb9d..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box3/texture.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box3/texture.xcf b/src/client/assets/room/furnitures/cardboard-box3/texture.xcf
deleted file mode 100644
index 7ffb3e3439..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box3/texture.xcf
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cardboard-box3/uv.png b/src/client/assets/room/furnitures/cardboard-box3/uv.png
deleted file mode 100644
index 797ac509db..0000000000
--- a/src/client/assets/room/furnitures/cardboard-box3/uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.blend b/src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.blend
deleted file mode 100644
index 750343d4f0..0000000000
--- a/src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.glb b/src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.glb
deleted file mode 100644
index 3066a69e35..0000000000
--- a/src/client/assets/room/furnitures/carpet-stripe/carpet-stripe.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/chair/chair.blend b/src/client/assets/room/furnitures/chair/chair.blend
deleted file mode 100644
index 79c29a8401..0000000000
--- a/src/client/assets/room/furnitures/chair/chair.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/chair/chair.glb b/src/client/assets/room/furnitures/chair/chair.glb
deleted file mode 100644
index 08ee1a0bb0..0000000000
--- a/src/client/assets/room/furnitures/chair/chair.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/chair2/chair2.blend b/src/client/assets/room/furnitures/chair2/chair2.blend
deleted file mode 100644
index c6a1acd96f..0000000000
--- a/src/client/assets/room/furnitures/chair2/chair2.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/chair2/chair2.glb b/src/client/assets/room/furnitures/chair2/chair2.glb
deleted file mode 100644
index 5ea2f3518b..0000000000
--- a/src/client/assets/room/furnitures/chair2/chair2.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/color-box/color-box.blend b/src/client/assets/room/furnitures/color-box/color-box.blend
deleted file mode 100644
index f96a4ff766..0000000000
--- a/src/client/assets/room/furnitures/color-box/color-box.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/color-box/color-box.glb b/src/client/assets/room/furnitures/color-box/color-box.glb
deleted file mode 100644
index 43f2abcae8..0000000000
--- a/src/client/assets/room/furnitures/color-box/color-box.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/corkboard/corkboard.blend b/src/client/assets/room/furnitures/corkboard/corkboard.blend
deleted file mode 100644
index 9a7e1878cd..0000000000
--- a/src/client/assets/room/furnitures/corkboard/corkboard.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/corkboard/corkboard.glb b/src/client/assets/room/furnitures/corkboard/corkboard.glb
deleted file mode 100644
index fee108fb91..0000000000
--- a/src/client/assets/room/furnitures/corkboard/corkboard.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cube/cube.blend b/src/client/assets/room/furnitures/cube/cube.blend
deleted file mode 100644
index 1af5bf40a9..0000000000
--- a/src/client/assets/room/furnitures/cube/cube.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cube/cube.glb b/src/client/assets/room/furnitures/cube/cube.glb
deleted file mode 100644
index 4ac8b6036d..0000000000
--- a/src/client/assets/room/furnitures/cube/cube.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cup-noodle/cup-noodle.blend b/src/client/assets/room/furnitures/cup-noodle/cup-noodle.blend
deleted file mode 100644
index 37ca8868c7..0000000000
--- a/src/client/assets/room/furnitures/cup-noodle/cup-noodle.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cup-noodle/cup-noodle.glb b/src/client/assets/room/furnitures/cup-noodle/cup-noodle.glb
deleted file mode 100644
index 58efb1b3b4..0000000000
--- a/src/client/assets/room/furnitures/cup-noodle/cup-noodle.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/cup-noodle/noodle.png b/src/client/assets/room/furnitures/cup-noodle/noodle.png
deleted file mode 100644
index 1d74e0bbe7..0000000000
--- a/src/client/assets/room/furnitures/cup-noodle/noodle.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/desk/desk.blend b/src/client/assets/room/furnitures/desk/desk.blend
deleted file mode 100644
index c88d01f0b2..0000000000
--- a/src/client/assets/room/furnitures/desk/desk.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/desk/desk.glb b/src/client/assets/room/furnitures/desk/desk.glb
deleted file mode 100644
index 4a58513095..0000000000
--- a/src/client/assets/room/furnitures/desk/desk.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/doll-ai/doll-ai.blend b/src/client/assets/room/furnitures/doll-ai/doll-ai.blend
deleted file mode 100644
index a912231ecb..0000000000
--- a/src/client/assets/room/furnitures/doll-ai/doll-ai.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/doll-ai/doll-ai.glb b/src/client/assets/room/furnitures/doll-ai/doll-ai.glb
deleted file mode 100644
index ec55a7bd7b..0000000000
--- a/src/client/assets/room/furnitures/doll-ai/doll-ai.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/doll-ai/doll_ai_tex.png b/src/client/assets/room/furnitures/doll-ai/doll_ai_tex.png
deleted file mode 100644
index 370ca5f75b..0000000000
--- a/src/client/assets/room/furnitures/doll-ai/doll_ai_tex.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/energy-drink/energy-drink.blend b/src/client/assets/room/furnitures/energy-drink/energy-drink.blend
deleted file mode 100644
index 65fc41273e..0000000000
--- a/src/client/assets/room/furnitures/energy-drink/energy-drink.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/energy-drink/energy-drink.glb b/src/client/assets/room/furnitures/energy-drink/energy-drink.glb
deleted file mode 100644
index 7fb1c27836..0000000000
--- a/src/client/assets/room/furnitures/energy-drink/energy-drink.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/energy-drink/texture.afdesign b/src/client/assets/room/furnitures/energy-drink/texture.afdesign
deleted file mode 100644
index 8c117a49b1..0000000000
--- a/src/client/assets/room/furnitures/energy-drink/texture.afdesign
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/energy-drink/texture.png b/src/client/assets/room/furnitures/energy-drink/texture.png
deleted file mode 100644
index 484ca0f96f..0000000000
--- a/src/client/assets/room/furnitures/energy-drink/texture.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/energy-drink/uv.png b/src/client/assets/room/furnitures/energy-drink/uv.png
deleted file mode 100644
index 2a3f20c999..0000000000
--- a/src/client/assets/room/furnitures/energy-drink/uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/eraser/cover.png b/src/client/assets/room/furnitures/eraser/cover.png
deleted file mode 100644
index 932a3fc62e..0000000000
--- a/src/client/assets/room/furnitures/eraser/cover.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/eraser/cover.psd b/src/client/assets/room/furnitures/eraser/cover.psd
deleted file mode 100644
index c393337833..0000000000
--- a/src/client/assets/room/furnitures/eraser/cover.psd
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/eraser/eraser-uv.png b/src/client/assets/room/furnitures/eraser/eraser-uv.png
deleted file mode 100644
index 89e4ea4c45..0000000000
--- a/src/client/assets/room/furnitures/eraser/eraser-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/eraser/eraser.blend b/src/client/assets/room/furnitures/eraser/eraser.blend
deleted file mode 100644
index 103c54fbae..0000000000
--- a/src/client/assets/room/furnitures/eraser/eraser.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/eraser/eraser.glb b/src/client/assets/room/furnitures/eraser/eraser.glb
deleted file mode 100644
index 016b60df20..0000000000
--- a/src/client/assets/room/furnitures/eraser/eraser.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue-uv.png b/src/client/assets/room/furnitures/facial-tissue/facial-tissue-uv.png
deleted file mode 100644
index e3865ad15e..0000000000
--- a/src/client/assets/room/furnitures/facial-tissue/facial-tissue-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.blend b/src/client/assets/room/furnitures/facial-tissue/facial-tissue.blend
deleted file mode 100644
index d59f87c1ee..0000000000
--- a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.glb b/src/client/assets/room/furnitures/facial-tissue/facial-tissue.glb
deleted file mode 100644
index 48b36ef347..0000000000
--- a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.png b/src/client/assets/room/furnitures/facial-tissue/facial-tissue.png
deleted file mode 100644
index 7cee4b1859..0000000000
--- a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.psd b/src/client/assets/room/furnitures/facial-tissue/facial-tissue.psd
deleted file mode 100644
index cd59fc007b..0000000000
--- a/src/client/assets/room/furnitures/facial-tissue/facial-tissue.psd
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/fan/fan.blend b/src/client/assets/room/furnitures/fan/fan.blend
deleted file mode 100644
index 8c8106e5fe..0000000000
--- a/src/client/assets/room/furnitures/fan/fan.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/fan/fan.glb b/src/client/assets/room/furnitures/fan/fan.glb
deleted file mode 100644
index d9367f3534..0000000000
--- a/src/client/assets/room/furnitures/fan/fan.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/holo-display/holo-display.blend b/src/client/assets/room/furnitures/holo-display/holo-display.blend
deleted file mode 100644
index 56d2e1f819..0000000000
--- a/src/client/assets/room/furnitures/holo-display/holo-display.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/holo-display/holo-display.glb b/src/client/assets/room/furnitures/holo-display/holo-display.glb
deleted file mode 100644
index 4d042a59b3..0000000000
--- a/src/client/assets/room/furnitures/holo-display/holo-display.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/holo-display/ray-uv.png b/src/client/assets/room/furnitures/holo-display/ray-uv.png
deleted file mode 100644
index aa7e817e0f..0000000000
--- a/src/client/assets/room/furnitures/holo-display/ray-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/holo-display/ray.png b/src/client/assets/room/furnitures/holo-display/ray.png
deleted file mode 100644
index 6a5d24e143..0000000000
--- a/src/client/assets/room/furnitures/holo-display/ray.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/keyboard/keyboard.blend b/src/client/assets/room/furnitures/keyboard/keyboard.blend
deleted file mode 100644
index ab33d134b3..0000000000
--- a/src/client/assets/room/furnitures/keyboard/keyboard.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/keyboard/keyboard.glb b/src/client/assets/room/furnitures/keyboard/keyboard.glb
deleted file mode 100644
index 15dc69f47a..0000000000
--- a/src/client/assets/room/furnitures/keyboard/keyboard.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/low-table/low-table.blend b/src/client/assets/room/furnitures/low-table/low-table.blend
deleted file mode 100644
index e1592174d9..0000000000
--- a/src/client/assets/room/furnitures/low-table/low-table.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/low-table/low-table.glb b/src/client/assets/room/furnitures/low-table/low-table.glb
deleted file mode 100644
index c69bf35d7b..0000000000
--- a/src/client/assets/room/furnitures/low-table/low-table.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/mat/mat.blend b/src/client/assets/room/furnitures/mat/mat.blend
deleted file mode 100644
index a1e1a68c55..0000000000
--- a/src/client/assets/room/furnitures/mat/mat.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/mat/mat.glb b/src/client/assets/room/furnitures/mat/mat.glb
deleted file mode 100644
index 87ccd44e1a..0000000000
--- a/src/client/assets/room/furnitures/mat/mat.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/milk/milk-uv.png b/src/client/assets/room/furnitures/milk/milk-uv.png
deleted file mode 100644
index 258fd54638..0000000000
--- a/src/client/assets/room/furnitures/milk/milk-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/milk/milk.blend b/src/client/assets/room/furnitures/milk/milk.blend
deleted file mode 100644
index 2df508d5b9..0000000000
--- a/src/client/assets/room/furnitures/milk/milk.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/milk/milk.glb b/src/client/assets/room/furnitures/milk/milk.glb
deleted file mode 100644
index b335fe3d02..0000000000
--- a/src/client/assets/room/furnitures/milk/milk.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/milk/milk.png b/src/client/assets/room/furnitures/milk/milk.png
deleted file mode 100644
index 35181c8c8c..0000000000
--- a/src/client/assets/room/furnitures/milk/milk.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/milk/milk.psd b/src/client/assets/room/furnitures/milk/milk.psd
deleted file mode 100644
index f31e439277..0000000000
--- a/src/client/assets/room/furnitures/milk/milk.psd
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/monitor/monitor.blend b/src/client/assets/room/furnitures/monitor/monitor.blend
deleted file mode 100644
index 6c042ccdd8..0000000000
--- a/src/client/assets/room/furnitures/monitor/monitor.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/monitor/monitor.glb b/src/client/assets/room/furnitures/monitor/monitor.glb
deleted file mode 100644
index fc33286a15..0000000000
--- a/src/client/assets/room/furnitures/monitor/monitor.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/monitor/monitor.psd b/src/client/assets/room/furnitures/monitor/monitor.psd
deleted file mode 100644
index 57afff9cd9..0000000000
--- a/src/client/assets/room/furnitures/monitor/monitor.psd
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/monitor/screen-uv.png b/src/client/assets/room/furnitures/monitor/screen-uv.png
deleted file mode 100644
index 35f74de8aa..0000000000
--- a/src/client/assets/room/furnitures/monitor/screen-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/monitor/screen.jpg b/src/client/assets/room/furnitures/monitor/screen.jpg
deleted file mode 100644
index 4004a1ede9..0000000000
--- a/src/client/assets/room/furnitures/monitor/screen.jpg
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/moon/moon.blend b/src/client/assets/room/furnitures/moon/moon.blend
deleted file mode 100644
index 4ff3deab8e..0000000000
--- a/src/client/assets/room/furnitures/moon/moon.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/moon/moon.glb b/src/client/assets/room/furnitures/moon/moon.glb
deleted file mode 100644
index 07fa7e4c02..0000000000
--- a/src/client/assets/room/furnitures/moon/moon.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/moon/moon.jpg b/src/client/assets/room/furnitures/moon/moon.jpg
deleted file mode 100644
index 8988ac64b9..0000000000
--- a/src/client/assets/room/furnitures/moon/moon.jpg
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/mousepad/mousepad.blend b/src/client/assets/room/furnitures/mousepad/mousepad.blend
deleted file mode 100644
index 14bd139c94..0000000000
--- a/src/client/assets/room/furnitures/mousepad/mousepad.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/mousepad/mousepad.glb b/src/client/assets/room/furnitures/mousepad/mousepad.glb
deleted file mode 100644
index 681ada49cd..0000000000
--- a/src/client/assets/room/furnitures/mousepad/mousepad.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pc/motherboard-uv.png b/src/client/assets/room/furnitures/pc/motherboard-uv.png
deleted file mode 100644
index 355009fe7c..0000000000
--- a/src/client/assets/room/furnitures/pc/motherboard-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pc/motherboard-uv.psd b/src/client/assets/room/furnitures/pc/motherboard-uv.psd
deleted file mode 100644
index 971f33f79e..0000000000
--- a/src/client/assets/room/furnitures/pc/motherboard-uv.psd
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pc/motherboard.jpg b/src/client/assets/room/furnitures/pc/motherboard.jpg
deleted file mode 100644
index d894e4efcf..0000000000
--- a/src/client/assets/room/furnitures/pc/motherboard.jpg
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pc/pc.blend b/src/client/assets/room/furnitures/pc/pc.blend
deleted file mode 100644
index 13dfec6ccc..0000000000
--- a/src/client/assets/room/furnitures/pc/pc.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pc/pc.glb b/src/client/assets/room/furnitures/pc/pc.glb
deleted file mode 100644
index 44a48b18ae..0000000000
--- a/src/client/assets/room/furnitures/pc/pc.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pencil/pencil.blend b/src/client/assets/room/furnitures/pencil/pencil.blend
deleted file mode 100644
index 0fc6bdd776..0000000000
--- a/src/client/assets/room/furnitures/pencil/pencil.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pencil/pencil.glb b/src/client/assets/room/furnitures/pencil/pencil.glb
deleted file mode 100644
index a938b5cdcc..0000000000
--- a/src/client/assets/room/furnitures/pencil/pencil.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/photoframe/photo-uv.png b/src/client/assets/room/furnitures/photoframe/photo-uv.png
deleted file mode 100644
index 9b94906413..0000000000
--- a/src/client/assets/room/furnitures/photoframe/photo-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/photoframe/photo.jpg b/src/client/assets/room/furnitures/photoframe/photo.jpg
deleted file mode 100644
index af14f0f36a..0000000000
--- a/src/client/assets/room/furnitures/photoframe/photo.jpg
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/photoframe/photoframe.blend b/src/client/assets/room/furnitures/photoframe/photoframe.blend
deleted file mode 100644
index 4224cde45b..0000000000
--- a/src/client/assets/room/furnitures/photoframe/photoframe.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/photoframe/photoframe.glb b/src/client/assets/room/furnitures/photoframe/photoframe.glb
deleted file mode 100644
index 4255a77de6..0000000000
--- a/src/client/assets/room/furnitures/photoframe/photoframe.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/piano/piano.blend b/src/client/assets/room/furnitures/piano/piano.blend
deleted file mode 100644
index 7653cdf672..0000000000
--- a/src/client/assets/room/furnitures/piano/piano.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/piano/piano.glb b/src/client/assets/room/furnitures/piano/piano.glb
deleted file mode 100644
index 7242e78ceb..0000000000
--- a/src/client/assets/room/furnitures/piano/piano.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pinguin/pinguin.blend b/src/client/assets/room/furnitures/pinguin/pinguin.blend
deleted file mode 100644
index 514c713e4c..0000000000
--- a/src/client/assets/room/furnitures/pinguin/pinguin.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pinguin/pinguin.glb b/src/client/assets/room/furnitures/pinguin/pinguin.glb
deleted file mode 100644
index 6df34c06e9..0000000000
--- a/src/client/assets/room/furnitures/pinguin/pinguin.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/plant/plant-soil-uv.png b/src/client/assets/room/furnitures/plant/plant-soil-uv.png
deleted file mode 100644
index d4971a896c..0000000000
--- a/src/client/assets/room/furnitures/plant/plant-soil-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/plant/plant-soil.png b/src/client/assets/room/furnitures/plant/plant-soil.png
deleted file mode 100644
index e79ccd240e..0000000000
--- a/src/client/assets/room/furnitures/plant/plant-soil.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/plant/plant-soil.psd b/src/client/assets/room/furnitures/plant/plant-soil.psd
deleted file mode 100644
index 1457b7ea5b..0000000000
--- a/src/client/assets/room/furnitures/plant/plant-soil.psd
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/plant/plant.blend b/src/client/assets/room/furnitures/plant/plant.blend
deleted file mode 100644
index aa38c7b54e..0000000000
--- a/src/client/assets/room/furnitures/plant/plant.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/plant/plant.glb b/src/client/assets/room/furnitures/plant/plant.glb
deleted file mode 100644
index 38422b4a9b..0000000000
--- a/src/client/assets/room/furnitures/plant/plant.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/plant2/plant2.blend b/src/client/assets/room/furnitures/plant2/plant2.blend
deleted file mode 100644
index 6592c5d98d..0000000000
--- a/src/client/assets/room/furnitures/plant2/plant2.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/plant2/plant2.glb b/src/client/assets/room/furnitures/plant2/plant2.glb
deleted file mode 100644
index 223e6f5834..0000000000
--- a/src/client/assets/room/furnitures/plant2/plant2.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/plant2/soil.png b/src/client/assets/room/furnitures/plant2/soil.png
deleted file mode 100644
index e79ccd240e..0000000000
--- a/src/client/assets/room/furnitures/plant2/soil.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/poster-h/poster-h.blend b/src/client/assets/room/furnitures/poster-h/poster-h.blend
deleted file mode 100644
index 40f944f3c1..0000000000
--- a/src/client/assets/room/furnitures/poster-h/poster-h.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/poster-h/poster-h.glb b/src/client/assets/room/furnitures/poster-h/poster-h.glb
deleted file mode 100644
index c6032c1009..0000000000
--- a/src/client/assets/room/furnitures/poster-h/poster-h.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/poster-h/uv.png b/src/client/assets/room/furnitures/poster-h/uv.png
deleted file mode 100644
index f854231e0b..0000000000
--- a/src/client/assets/room/furnitures/poster-h/uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/poster-v/poster-v.blend b/src/client/assets/room/furnitures/poster-v/poster-v.blend
deleted file mode 100644
index 07fe971634..0000000000
--- a/src/client/assets/room/furnitures/poster-v/poster-v.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/poster-v/poster-v.glb b/src/client/assets/room/furnitures/poster-v/poster-v.glb
deleted file mode 100644
index 6e3782f193..0000000000
--- a/src/client/assets/room/furnitures/poster-v/poster-v.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/poster-v/uv.png b/src/client/assets/room/furnitures/poster-v/uv.png
deleted file mode 100644
index 7bb2bf809e..0000000000
--- a/src/client/assets/room/furnitures/poster-v/uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pudding/pudding.blend b/src/client/assets/room/furnitures/pudding/pudding.blend
deleted file mode 100644
index bba40ce161..0000000000
--- a/src/client/assets/room/furnitures/pudding/pudding.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/pudding/pudding.glb b/src/client/assets/room/furnitures/pudding/pudding.glb
deleted file mode 100644
index 06c9ed80cc..0000000000
--- a/src/client/assets/room/furnitures/pudding/pudding.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/rubik-cube/rubik-cube.blend b/src/client/assets/room/furnitures/rubik-cube/rubik-cube.blend
deleted file mode 100644
index 6c09067e78..0000000000
--- a/src/client/assets/room/furnitures/rubik-cube/rubik-cube.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/rubik-cube/rubik-cube.glb b/src/client/assets/room/furnitures/rubik-cube/rubik-cube.glb
deleted file mode 100644
index d640df9b06..0000000000
--- a/src/client/assets/room/furnitures/rubik-cube/rubik-cube.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/server/rack-uv.png b/src/client/assets/room/furnitures/server/rack-uv.png
deleted file mode 100644
index 65bdb0ffd9..0000000000
--- a/src/client/assets/room/furnitures/server/rack-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/server/rack.png b/src/client/assets/room/furnitures/server/rack.png
deleted file mode 100644
index b851295cfa..0000000000
--- a/src/client/assets/room/furnitures/server/rack.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/server/server.blend b/src/client/assets/room/furnitures/server/server.blend
deleted file mode 100644
index 6675dfbdc2..0000000000
--- a/src/client/assets/room/furnitures/server/server.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/server/server.glb b/src/client/assets/room/furnitures/server/server.glb
deleted file mode 100644
index a8b530a2d2..0000000000
--- a/src/client/assets/room/furnitures/server/server.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/server/server.png b/src/client/assets/room/furnitures/server/server.png
deleted file mode 100644
index 8e9a0d716c..0000000000
--- a/src/client/assets/room/furnitures/server/server.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/server/uv.png b/src/client/assets/room/furnitures/server/uv.png
deleted file mode 100644
index ca2e747d16..0000000000
--- a/src/client/assets/room/furnitures/server/uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/sofa/sofa.blend b/src/client/assets/room/furnitures/sofa/sofa.blend
deleted file mode 100644
index fb5aa51a2c..0000000000
--- a/src/client/assets/room/furnitures/sofa/sofa.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/sofa/sofa.glb b/src/client/assets/room/furnitures/sofa/sofa.glb
deleted file mode 100644
index 6ce77d94ac..0000000000
--- a/src/client/assets/room/furnitures/sofa/sofa.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/spiral/spiral.blend b/src/client/assets/room/furnitures/spiral/spiral.blend
deleted file mode 100644
index 9d3be77bce..0000000000
--- a/src/client/assets/room/furnitures/spiral/spiral.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/spiral/spiral.glb b/src/client/assets/room/furnitures/spiral/spiral.glb
deleted file mode 100644
index ee8e3c23b1..0000000000
--- a/src/client/assets/room/furnitures/spiral/spiral.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/tv/screen-uv.png b/src/client/assets/room/furnitures/tv/screen-uv.png
deleted file mode 100644
index 4bb74f031f..0000000000
--- a/src/client/assets/room/furnitures/tv/screen-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/tv/tv.blend b/src/client/assets/room/furnitures/tv/tv.blend
deleted file mode 100644
index 490e298e7b..0000000000
--- a/src/client/assets/room/furnitures/tv/tv.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/tv/tv.glb b/src/client/assets/room/furnitures/tv/tv.glb
deleted file mode 100644
index b9bd23896b..0000000000
--- a/src/client/assets/room/furnitures/tv/tv.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/wall-clock/wall-clock.blend b/src/client/assets/room/furnitures/wall-clock/wall-clock.blend
deleted file mode 100644
index 0a61c8f01e..0000000000
--- a/src/client/assets/room/furnitures/wall-clock/wall-clock.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/furnitures/wall-clock/wall-clock.glb b/src/client/assets/room/furnitures/wall-clock/wall-clock.glb
deleted file mode 100644
index b9f0093a8d..0000000000
--- a/src/client/assets/room/furnitures/wall-clock/wall-clock.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/default/default.blend b/src/client/assets/room/rooms/default/default.blend
deleted file mode 100644
index 661154724a..0000000000
--- a/src/client/assets/room/rooms/default/default.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/default/default.glb b/src/client/assets/room/rooms/default/default.glb
deleted file mode 100644
index 3d378deee2..0000000000
--- a/src/client/assets/room/rooms/default/default.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/washitsu/husuma-uv.png b/src/client/assets/room/rooms/washitsu/husuma-uv.png
deleted file mode 100644
index ae2fca3911..0000000000
--- a/src/client/assets/room/rooms/washitsu/husuma-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/washitsu/husuma.png b/src/client/assets/room/rooms/washitsu/husuma.png
deleted file mode 100644
index 084cbed67c..0000000000
--- a/src/client/assets/room/rooms/washitsu/husuma.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/washitsu/tatami-single1600.png b/src/client/assets/room/rooms/washitsu/tatami-single1600.png
deleted file mode 100644
index c0e684d743..0000000000
--- a/src/client/assets/room/rooms/washitsu/tatami-single1600.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/washitsu/tatami-uv.png b/src/client/assets/room/rooms/washitsu/tatami-uv.png
deleted file mode 100644
index 5b16c66091..0000000000
--- a/src/client/assets/room/rooms/washitsu/tatami-uv.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/washitsu/tatami.afdesign b/src/client/assets/room/rooms/washitsu/tatami.afdesign
deleted file mode 100644
index 9300a26950..0000000000
--- a/src/client/assets/room/rooms/washitsu/tatami.afdesign
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/washitsu/tatami.png b/src/client/assets/room/rooms/washitsu/tatami.png
deleted file mode 100644
index 8894d040ae..0000000000
--- a/src/client/assets/room/rooms/washitsu/tatami.png
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/washitsu/washitsu.blend b/src/client/assets/room/rooms/washitsu/washitsu.blend
deleted file mode 100644
index 84dc11374d..0000000000
--- a/src/client/assets/room/rooms/washitsu/washitsu.blend
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/room/rooms/washitsu/washitsu.glb b/src/client/assets/room/rooms/washitsu/washitsu.glb
deleted file mode 100644
index 5b4767bc73..0000000000
--- a/src/client/assets/room/rooms/washitsu/washitsu.glb
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/aisha/1.mp3 b/src/client/assets/sounds/aisha/1.mp3
deleted file mode 100644
index d8e9a2f265..0000000000
--- a/src/client/assets/sounds/aisha/1.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/aisha/2.mp3 b/src/client/assets/sounds/aisha/2.mp3
deleted file mode 100644
index 477c2eba43..0000000000
--- a/src/client/assets/sounds/aisha/2.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/aisha/3.mp3 b/src/client/assets/sounds/aisha/3.mp3
deleted file mode 100644
index fe0d8063df..0000000000
--- a/src/client/assets/sounds/aisha/3.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/noizenecio/kick_gaba.mp3 b/src/client/assets/sounds/noizenecio/kick_gaba.mp3
deleted file mode 100644
index 616b506c4f..0000000000
--- a/src/client/assets/sounds/noizenecio/kick_gaba.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/noizenecio/kick_gaba2.mp3 b/src/client/assets/sounds/noizenecio/kick_gaba2.mp3
deleted file mode 100644
index 33c2837620..0000000000
--- a/src/client/assets/sounds/noizenecio/kick_gaba2.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/down.mp3 b/src/client/assets/sounds/syuilo/down.mp3
deleted file mode 100644
index 4cd421139d..0000000000
--- a/src/client/assets/sounds/syuilo/down.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/kick.mp3 b/src/client/assets/sounds/syuilo/kick.mp3
deleted file mode 100644
index 4e0e72091c..0000000000
--- a/src/client/assets/sounds/syuilo/kick.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/pirori-square-wet.mp3 b/src/client/assets/sounds/syuilo/pirori-square-wet.mp3
deleted file mode 100644
index babf1fce60..0000000000
--- a/src/client/assets/sounds/syuilo/pirori-square-wet.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/pirori-wet.mp3 b/src/client/assets/sounds/syuilo/pirori-wet.mp3
deleted file mode 100644
index 25e2c46a64..0000000000
--- a/src/client/assets/sounds/syuilo/pirori-wet.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/pirori.mp3 b/src/client/assets/sounds/syuilo/pirori.mp3
deleted file mode 100644
index a745415ac0..0000000000
--- a/src/client/assets/sounds/syuilo/pirori.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/poi1.mp3 b/src/client/assets/sounds/syuilo/poi1.mp3
deleted file mode 100644
index 59dae90965..0000000000
--- a/src/client/assets/sounds/syuilo/poi1.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/poi2.mp3 b/src/client/assets/sounds/syuilo/poi2.mp3
deleted file mode 100644
index a65c653891..0000000000
--- a/src/client/assets/sounds/syuilo/poi2.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/pope1.mp3 b/src/client/assets/sounds/syuilo/pope1.mp3
deleted file mode 100644
index d6f53cfacc..0000000000
--- a/src/client/assets/sounds/syuilo/pope1.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/pope2.mp3 b/src/client/assets/sounds/syuilo/pope2.mp3
deleted file mode 100644
index fe5d95e292..0000000000
--- a/src/client/assets/sounds/syuilo/pope2.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/popo.mp3 b/src/client/assets/sounds/syuilo/popo.mp3
deleted file mode 100644
index a2a1605bbb..0000000000
--- a/src/client/assets/sounds/syuilo/popo.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/reverved.mp3 b/src/client/assets/sounds/syuilo/reverved.mp3
deleted file mode 100644
index 47588ef270..0000000000
--- a/src/client/assets/sounds/syuilo/reverved.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/ryukyu.mp3 b/src/client/assets/sounds/syuilo/ryukyu.mp3
deleted file mode 100644
index 9e935e3f37..0000000000
--- a/src/client/assets/sounds/syuilo/ryukyu.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/snare.mp3 b/src/client/assets/sounds/syuilo/snare.mp3
deleted file mode 100644
index 9244189c2d..0000000000
--- a/src/client/assets/sounds/syuilo/snare.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/square-pico.mp3 b/src/client/assets/sounds/syuilo/square-pico.mp3
deleted file mode 100644
index c4d8305ae7..0000000000
--- a/src/client/assets/sounds/syuilo/square-pico.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/triple.mp3 b/src/client/assets/sounds/syuilo/triple.mp3
deleted file mode 100644
index 54ab974d46..0000000000
--- a/src/client/assets/sounds/syuilo/triple.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/up.mp3 b/src/client/assets/sounds/syuilo/up.mp3
deleted file mode 100644
index 3f30867764..0000000000
--- a/src/client/assets/sounds/syuilo/up.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/assets/sounds/syuilo/waon.mp3 b/src/client/assets/sounds/syuilo/waon.mp3
deleted file mode 100644
index a4af473861..0000000000
--- a/src/client/assets/sounds/syuilo/waon.mp3
+++ /dev/null
Binary files differ
diff --git a/src/client/components/emoji-picker-dialog.vue b/src/client/components/emoji-picker-dialog.vue
index affc1ccf39..4b165d9f91 100644
--- a/src/client/components/emoji-picker-dialog.vue
+++ b/src/client/components/emoji-picker-dialog.vue
@@ -1,6 +1,6 @@
<template>
-<MkModal ref="modal" :manual-showing="manualShowing" :src="src" @click="$refs.modal.close()" @opening="opening" @close="$emit('close')" @closed="$emit('closed')" v-slot="{ showing }">
- <MkEmojiPicker v-show="showing !== false" :show-pinned="showPinned" :as-reaction-picker="asReactionPicker" @chosen="chosen" ref="picker"/>
+<MkModal ref="modal" :manual-showing="manualShowing" :src="src" @click="$refs.modal.close()" @opening="opening" @close="$emit('close')" @closed="$emit('closed')">
+ <MkEmojiPicker :show-pinned="showPinned" :as-reaction-picker="asReactionPicker" @chosen="chosen" ref="picker"/>
</MkModal>
</template>
diff --git a/src/client/components/emoji-picker.vue b/src/client/components/emoji-picker.vue
index f7eaeb2bfe..99d6c8a330 100644
--- a/src/client/components/emoji-picker.vue
+++ b/src/client/components/emoji-picker.vue
@@ -279,6 +279,7 @@ export default defineComponent({
reset() {
this.$refs.emojis.scrollTop = 0;
+ this.q = '';
},
getKey(emoji: any) {
diff --git a/src/client/components/media-video.vue b/src/client/components/media-video.vue
index 3788947206..bdd3983e1e 100644
--- a/src/client/components/media-video.vue
+++ b/src/client/components/media-video.vue
@@ -6,22 +6,24 @@
</div>
</div>
<div class="kkjnbbplepmiyuadieoenjgutgcmtsvu" v-else>
- <i><Fa :icon="faEyeSlash" @click="hide = true"/></i>
- <a
- :href="video.url"
- rel="nofollow noopener"
- target="_blank"
- :style="imageStyle"
+ <video
+ :poster="video.thumbnailUrl"
:title="video.name"
+ crossorigin="anonymous"
+ preload="none"
+ controls
>
- <Fa :icon="faPlayCircle"/>
- </a>
+ <source
+ :src="video.url"
+ :type="video.type"
+ >
+ </video>
+ <i><Fa :icon="faEyeSlash" @click="hide = true"/></i>
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
-import { faPlayCircle } from '@fortawesome/free-regular-svg-icons';
import { faExclamationTriangle, faEyeSlash } from '@fortawesome/free-solid-svg-icons';
import * as os from '@/os';
@@ -35,18 +37,10 @@ export default defineComponent({
data() {
return {
hide: true,
- faPlayCircle,
faExclamationTriangle,
faEyeSlash
};
},
- computed: {
- imageStyle(): any {
- return {
- 'background-image': `url(${this.video.thumbnailUrl})`
- };
- }
- },
created() {
this.hide = (this.$store.state.nsfw === 'force') ? true : this.video.isSensitive && (this.$store.state.nsfw !== 'ignore');
},
@@ -72,7 +66,7 @@ export default defineComponent({
right: 12px;
}
- > a {
+ > video {
display: flex;
justify-content: center;
align-items: center;
diff --git a/src/client/components/note-detailed.vue b/src/client/components/note-detailed.vue
index b5bc054e5e..1ef3f43389 100644
--- a/src/client/components/note-detailed.vue
+++ b/src/client/components/note-detailed.vue
@@ -140,6 +140,7 @@ import { checkWordMute } from '@/scripts/check-word-mute';
import { userPage } from '@/filters/user';
import * as os from '@/os';
import { noteActions, noteViewInterruptors } from '@/store';
+import { reactionPicker } from '@/scripts/reaction-picker';
function markRawAll(...xs) {
for (const x of xs) {
@@ -523,7 +524,7 @@ export default defineComponent({
react(viaKeyboard = false) {
pleaseLogin();
this.blur();
- os.pickReaction(this.$refs.reactButton, reaction => {
+ reactionPicker.show(this.$refs.reactButton, reaction => {
os.api('notes/reactions/create', {
noteId: this.appearNote.id,
reaction: reaction
diff --git a/src/client/components/note.vue b/src/client/components/note.vue
index bc2f87fe85..65e09b7802 100644
--- a/src/client/components/note.vue
+++ b/src/client/components/note.vue
@@ -122,6 +122,7 @@ import { checkWordMute } from '@/scripts/check-word-mute';
import { userPage } from '@/filters/user';
import * as os from '@/os';
import { noteActions, noteViewInterruptors } from '@/store';
+import { reactionPicker } from '@/scripts/reaction-picker';
function markRawAll(...xs) {
for (const x of xs) {
@@ -498,7 +499,7 @@ export default defineComponent({
react(viaKeyboard = false) {
pleaseLogin();
this.blur();
- os.pickReaction(this.$refs.reactButton, reaction => {
+ reactionPicker.show(this.$refs.reactButton, reaction => {
os.api('notes/reactions/create', {
noteId: this.appearNote.id,
reaction: reaction
diff --git a/src/client/components/ui/modal.vue b/src/client/components/ui/modal.vue
index 23c153e5f7..ff5b98d39f 100644
--- a/src/client/components/ui/modal.vue
+++ b/src/client/components/ui/modal.vue
@@ -1,14 +1,12 @@
<template>
-<div class="mk-modal" v-hotkey.global="keymap" :style="{ pointerEvents: (manualShowing != null ? manualShowing : showing) ? 'auto' : 'none', '--transformOrigin': transformOrigin }">
- <transition :name="$store.state.animation ? 'modal-bg' : ''" appear>
- <div class="bg _modalBg" v-if="manualShowing != null ? manualShowing : showing" @click="onBgClick"></div>
- </transition>
- <div class="content" :class="{ popup, fixed, top: position === 'top' }" @click.self="onBgClick" ref="content">
- <transition :name="$store.state.animation ? popup ? 'modal-popup-content' : 'modal-content' : ''" appear @after-leave="$emit('closed')" @enter="$emit('opening')" @after-enter="childRendered">
- <slot v-if="manualShowing != null ? true : showing" v-bind:showing="manualShowing"></slot>
- </transition>
+<transition :name="$store.state.animation ? popup ? 'modal-popup' : 'modal' : ''" appear @after-leave="onClosed" @enter="$emit('opening')" @after-enter="childRendered">
+ <div v-show="manualShowing != null ? manualShowing : showing" class="mk-modal" v-hotkey.global="keymap" :style="{ pointerEvents: (manualShowing != null ? manualShowing : showing) ? 'auto' : 'none', '--transformOrigin': transformOrigin }">
+ <div class="bg _modalBg" @click="onBgClick"></div>
+ <div class="content" :class="{ popup, fixed, top: position === 'top' }" @click.self="onBgClick" ref="content">
+ <slot></slot>
+ </div>
</div>
-</div>
+</transition>
</template>
<script lang="ts">
@@ -85,6 +83,8 @@ export default defineComponent({
const popover = this.$refs.content as any;
+ if (popover == null) return;
+
const rect = this.src.getBoundingClientRect();
const width = popover.offsetWidth;
@@ -163,42 +163,71 @@ export default defineComponent({
onBgClick() {
if (this.contentClicking) return;
this.$emit('click');
+ },
+
+ onClosed() {
+ this.$emit('closed');
}
}
});
</script>
-<style>
-.modal-popup-content-enter-active, .modal-popup-content-leave-active,
-.modal-content-enter-from, .modal-content-leave-to {
- transform-origin: var(--transformOrigin);
+<style lang="scss">
+.modal-popup-enter-active, .modal-popup-leave-active,
+.modal-enter-from, .modal-leave-to {
+ > .content {
+ transform-origin: var(--transformOrigin);
+ }
}
</style>
<style lang="scss" scoped>
-.modal-bg-enter-active, .modal-bg-leave-active {
- transition: opacity 0.3s !important;
-}
-.modal-bg-enter-from, .modal-bg-leave-to {
- opacity: 0;
-}
-
-.modal-content-enter-active, .modal-content-leave-active {
+.modal-enter-active, .modal-leave-active {
+ // CSS的には無意味だけどこれが無いとVueが認識しない
transition: opacity 0.3s, transform 0.3s !important;
+
+ > .bg {
+ transition: opacity 0.3s !important;
+ }
+
+ > .content {
+ transition: opacity 0.3s, transform 0.3s !important;
+ }
}
-.modal-content-enter-from, .modal-content-leave-to {
- pointer-events: none;
- opacity: 0;
- transform: scale(0.9);
+.modal-enter-from, .modal-leave-to {
+ > .bg {
+ opacity: 0;
+ }
+
+ > .content {
+ pointer-events: none;
+ opacity: 0;
+ transform: scale(0.9);
+ }
}
-.modal-popup-content-enter-active, .modal-popup-content-leave-active {
+.modal-popup-enter-active, .modal-popup-leave-active {
+ // CSS的には無意味だけどこれが無いとVueが認識しない
transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1), transform 0.5s cubic-bezier(0.16, 1, 0.3, 1) !important;
+
+ > .bg {
+ transition: opacity 0.3s !important;
+ }
+
+ > .content {
+ transition: opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1), transform 0.5s cubic-bezier(0.16, 1, 0.3, 1) !important;
+ }
}
-.modal-popup-content-enter-from, .modal-popup-content-leave-to {
- pointer-events: none;
- opacity: 0;
- transform: scale(0.9);
+.modal-popup-enter-from, .modal-popup-leave-to {
+ > .bg {
+ opacity: 0;
+ }
+
+ > .content {
+ pointer-events: none;
+ opacity: 0;
+ transform: scale(0.9);
+ }
}
.mk-modal {
@@ -227,12 +256,12 @@ export default defineComponent({
mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 16px, rgba(0,0,0,1) calc(100% - 16px), rgba(0,0,0,0) 100%);
}
- > * {
+ > ::v-deep(*) {
margin: auto;
}
&.top {
- > * {
+ > ::v-deep(*) {
margin-top: 0;
}
}
diff --git a/src/client/init.ts b/src/client/init.ts
index b3c53db7bb..1c44e7f23e 100644
--- a/src/client/init.ts
+++ b/src/client/init.ts
@@ -62,6 +62,7 @@ import { isMobile } from '@/scripts/is-mobile';
import { getThemes } from '@/theme-store';
import { initializeSw } from '@/scripts/initialize-sw';
import { reloadChannel } from '@/scripts/unison-reload';
+import { reactionPicker } from '@/scripts/reaction-picker';
console.info(`Misskey v${version}`);
@@ -219,9 +220,22 @@ components(app);
await router.isReady();
-//document.body.innerHTML = '<div id="app"></div>';
+const splash = document.getElementById('splash');
+// 念のためnullチェック(HTMLが古い場合があるため(そのうち消す))
+if (splash) splash.addEventListener('transitionend', () => {
+ splash.remove();
+});
+
+const rootEl = document.createElement('div');
+document.body.appendChild(rootEl);
+app.mount(rootEl);
-app.mount('body');
+reactionPicker.init();
+
+if (splash) {
+ splash.style.opacity = '0';
+ splash.style.pointerEvents = 'none';
+}
watch(defaultStore.reactiveState.darkMode, (darkMode) => {
import('@/scripts/theme').then(({ builtinThemes }) => {
diff --git a/src/client/os.ts b/src/client/os.ts
index 2b72391bf5..9be45e6c6d 100644
--- a/src/client/os.ts
+++ b/src/client/os.ts
@@ -357,38 +357,6 @@ export async function openEmojiPicker(src?: HTMLElement, opts, initialTextarea:
});
}
-let reactionPicker = null;
-export async function pickReaction(src: HTMLElement, chosen, closed) {
- if (reactionPicker) {
- reactionPicker.src.value = src;
- reactionPicker.manualShowing.value = true;
- reactionPicker.chosen = chosen;
- reactionPicker.closed = closed;
- } else {
- reactionPicker = {
- src: ref(src),
- manualShowing: ref(true),
- chosen, closed
- };
- popup(import('@/components/emoji-picker-dialog.vue'), {
- src: reactionPicker.src,
- asReactionPicker: true,
- manualShowing: reactionPicker.manualShowing
- }, {
- done: reaction => {
- reactionPicker.chosen(reaction);
- },
- close: () => {
- reactionPicker.manualShowing.value = false;
- },
- closed: () => {
- reactionPicker.src.value = null;
- reactionPicker.closed();
- }
- });
- }
-}
-
export function modalMenu(items: any[], src?: HTMLElement, options?: { align?: string; viaKeyboard?: boolean }) {
return new Promise((resolve, reject) => {
let dispose;
diff --git a/src/client/pages/settings/theme.manage.vue b/src/client/pages/settings/theme.manage.vue
index 5b9e075305..f08c354718 100644
--- a/src/client/pages/settings/theme.manage.vue
+++ b/src/client/pages/settings/theme.manage.vue
@@ -93,6 +93,8 @@ export default defineComponent({
uninstall() {
removeTheme(this.selectedTheme);
+ this.selectedThemeId = null;
+ os.success();
},
}
});
diff --git a/src/client/pages/v.vue b/src/client/pages/v.vue
index 021f8908fb..f456a29993 100644
--- a/src/client/pages/v.vue
+++ b/src/client/pages/v.vue
@@ -2,7 +2,7 @@
<div>
<section class="_section">
<div class="_content" style="text-align: center;">
- <img src="/assets/icons/512.png" alt="" style="display: block; width: 100px; margin: 0 auto; border-radius: 16px;"/>
+ <img src="/static-assets/icons/512.png" alt="" style="display: block; width: 100px; margin: 0 auto; border-radius: 16px;"/>
<div style="margin-top: 0.75em;">Misskey</div>
<div style="opacity: 0.5;">v{{ version }}</div>
</div>
diff --git a/src/client/pages/welcome.entrance.a.vue b/src/client/pages/welcome.entrance.a.vue
index 4d356774eb..872ea8797f 100644
--- a/src/client/pages/welcome.entrance.a.vue
+++ b/src/client/pages/welcome.entrance.a.vue
@@ -3,8 +3,9 @@
<div class="top">
<MkFeaturedPhotos class="bg"/>
<XTimeline class="tl"/>
- <div class="shape"></div>
- <img src="/assets/misskey.svg" class="misskey"/>
+ <div class="shape1"></div>
+ <div class="shape2"></div>
+ <img src="/static-assets/misskey.svg" class="misskey"/>
<div class="emojis">
<MkEmoji :normal="true" :no-style="true" emoji="👍"/>
<MkEmoji :normal="true" :no-style="true" emoji="❤"/>
@@ -18,7 +19,9 @@
</div>
<div class="fg">
<h1>
- <img class="logo" v-if="meta.logoImageUrl" :src="meta.logoImageUrl"><span v-else class="text">{{ instanceName }}</span>
+ <!-- 背景色によってはロゴが見えなくなるのでとりあえず無効に -->
+ <!-- <img class="logo" v-if="meta.logoImageUrl" :src="meta.logoImageUrl"><span v-else class="text">{{ instanceName }}</span> -->
+ <span class="text">{{ instanceName }}</span>
</h1>
<div class="about">
<div class="desc" v-html="meta.description || $ts.headlineMisskey"></div>
@@ -154,8 +157,8 @@ export default defineComponent({
> .bg {
position: absolute;
top: 0;
- left: 0;
- width: 100%;
+ right: 0;
+ width: 80%; // 100%からshapeの幅を引いている
height: 100%;
}
@@ -176,14 +179,24 @@ export default defineComponent({
}
}
- > .shape {
+ > .shape1 {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background: var(--accent);
+ clip-path: polygon(0% 0%, 45% 0%, 20% 100%, 0% 100%);
+ }
+ > .shape2 {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: var(--accent);
- clip-path: polygon(0% 0%, 50% 0%, 15% 100%, 0% 100%);
+ clip-path: polygon(0% 0%, 25% 0%, 35% 100%, 0% 100%);
+ opacity: 0.5;
}
> .misskey {
diff --git a/src/client/pages/welcome.entrance.b.vue b/src/client/pages/welcome.entrance.b.vue
index 8a6f60e726..95b99fb466 100644
--- a/src/client/pages/welcome.entrance.b.vue
+++ b/src/client/pages/welcome.entrance.b.vue
@@ -29,7 +29,7 @@
</I18n>
</div>
</div>
- <img src="/assets/misskey.svg" class="misskey"/>
+ <img src="/static-assets/misskey.svg" class="misskey"/>
</div>
</div>
</template>
diff --git a/src/client/pages/welcome.entrance.c.vue b/src/client/pages/welcome.entrance.c.vue
index e9df492cb6..8aba80e781 100644
--- a/src/client/pages/welcome.entrance.c.vue
+++ b/src/client/pages/welcome.entrance.c.vue
@@ -11,7 +11,7 @@
<MkEmoji :normal="true" :no-style="true" emoji="🍮"/>
</div>
<div class="main">
- <img src="/assets/misskey.svg" class="misskey"/>
+ <img src="/static-assets/misskey.svg" class="misskey"/>
<div class="form _panel">
<div class="bg">
<div class="fade"></div>
diff --git a/src/client/scripts/reaction-picker.ts b/src/client/scripts/reaction-picker.ts
new file mode 100644
index 0000000000..e923326ece
--- /dev/null
+++ b/src/client/scripts/reaction-picker.ts
@@ -0,0 +1,41 @@
+import { Ref, ref } from 'vue';
+import { popup } from '@/os';
+
+class ReactionPicker {
+ private src: Ref<HTMLElement | null> = ref(null);
+ private manualShowing = ref(false);
+ private onChosen?: Function;
+ private onClosed?: Function;
+
+ constructor() {
+ // nop
+ }
+
+ public async init() {
+ await popup(import('@/components/emoji-picker-dialog.vue'), {
+ src: this.src,
+ asReactionPicker: true,
+ manualShowing: this.manualShowing
+ }, {
+ done: reaction => {
+ this.onChosen!(reaction);
+ },
+ close: () => {
+ this.manualShowing.value = false;
+ },
+ closed: () => {
+ this.src.value = null;
+ this.onClosed!();
+ }
+ });
+ }
+
+ public show(src: HTMLElement, onChosen: Function, onClosed: Function) {
+ this.src.value = src;
+ this.manualShowing.value = true;
+ this.onChosen = onChosen;
+ this.onClosed = onClosed;
+ }
+}
+
+export const reactionPicker = new ReactionPicker();
diff --git a/src/client/scripts/room/room.ts b/src/client/scripts/room/room.ts
index 45ccd59b70..8fe3ebdeb0 100644
--- a/src/client/scripts/room/room.ts
+++ b/src/client/scripts/room/room.ts
@@ -340,7 +340,7 @@ export class Room {
@autobind
private loadRoom() {
const type = this.roomInfo.roomType;
- new GLTFLoader().load(`/assets/room/rooms/${type}/${type}.glb`, gltf => {
+ new GLTFLoader().load(`/static-assets/room/rooms/${type}/${type}.glb`, gltf => {
gltf.scene.traverse(child => {
if (!(child instanceof THREE.Mesh)) return;
@@ -375,7 +375,7 @@ export class Room {
const def = furnitureDefs.find(d => d.id === furniture.type);
return new Promise<GLTF>((res, rej) => {
const loader = new GLTFLoader();
- loader.load(`/assets/room/furnitures/${furniture.type}/${furniture.type}.glb`, gltf => {
+ loader.load(`/static-assets/room/furnitures/${furniture.type}/${furniture.type}.glb`, gltf => {
const model = gltf.scene;
// Load animation
diff --git a/src/client/scripts/sound.ts b/src/client/scripts/sound.ts
index 176d2b68bf..bb4cfee06a 100644
--- a/src/client/scripts/sound.ts
+++ b/src/client/scripts/sound.ts
@@ -16,7 +16,7 @@ export function playFile(file: string, volume: number) {
if (cache.has(file)) {
audio = cache.get(file);
} else {
- audio = new Audio(`/assets/sounds/${file}.mp3`);
+ audio = new Audio(`/static-assets/sounds/${file}.mp3`);
cache.set(file, audio);
}
audio.volume = masterVolume - ((1 - volume) * masterVolume);
diff --git a/src/client/store.ts b/src/client/store.ts
index 528e563fdd..14924dadd0 100644
--- a/src/client/store.ts
+++ b/src/client/store.ts
@@ -213,6 +213,8 @@ type Plugin = {
export class ColdDeviceStorage {
public static default = {
themes: [] as Theme[], // TODO: そのうち消す
+ // TODO: テーマをアカウントに保存するようになったのにもかかわらず、以下のどのテーマを使うかという情報だけがブラウザ保存になっていて、アカウント切り替えたりログアウトしたときに不具合が発生するのでなんとかする
+ // テーマIDを保存するのではなく、テーマ自体を保存するようにすれば解決するかも
darkTheme: '8050783a-7f63-445a-b270-36d0f6ba1677',
lightTheme: '4eea646f-7afa-4645-83e9-83af0333cd37',
syncDeviceDarkMode: true,
diff --git a/src/client/ui/chat/note.vue b/src/client/ui/chat/note.vue
index bd7bbc5a4f..5a4a13d889 100644
--- a/src/client/ui/chat/note.vue
+++ b/src/client/ui/chat/note.vue
@@ -121,6 +121,7 @@ import { checkWordMute } from '@/scripts/check-word-mute';
import { userPage } from '@/filters/user';
import * as os from '@/os';
import { noteActions, noteViewInterruptors } from '@/store';
+import { reactionPicker } from '@/scripts/reaction-picker';
function markRawAll(...xs) {
for (const x of xs) {
@@ -504,7 +505,7 @@ export default defineComponent({
pleaseLogin();
this.operating = true;
this.blur();
- os.pickReaction(this.$refs.reactButton, reaction => {
+ reactionPicker.show(this.$refs.reactButton, reaction => {
os.api('notes/reactions/create', {
noteId: this.appearNote.id,
reaction: reaction
diff --git a/src/models/repositories/antenna.ts b/src/models/repositories/antenna.ts
index b20da26c5d..0f0a5c0171 100644
--- a/src/models/repositories/antenna.ts
+++ b/src/models/repositories/antenna.ts
@@ -41,20 +41,78 @@ export const packedAntennaSchema = {
id: {
type: 'string' as const,
optional: false as const, nullable: false as const,
- format: 'id',
- description: 'The unique identifier for this Antenna.',
- example: 'xxxxxxxxxx',
+ format: 'id'
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
- format: 'date-time',
- description: 'The date that the Antenna was created.'
+ format: 'date-time'
},
name: {
type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ keywords: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ execludeKeywords: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ src: {
+ type: 'string' as const,
optional: false as const, nullable: false as const,
- description: 'The name of the Antenna.'
+ enum: ['home', 'all', 'users', 'list', 'group']
+ },
+ userListId: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id'
+ },
+ userGroupId: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id'
},
+ users: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ caseSensitive: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ default: false
+ },
+ notify: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ withReplies: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ default: false
+ },
+ withFile: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ hasUnreadNote: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ default: false
+ }
},
};
diff --git a/src/models/repositories/app.ts b/src/models/repositories/app.ts
index f5cc10787a..33e0f41156 100644
--- a/src/models/repositories/app.ts
+++ b/src/models/repositories/app.ts
@@ -46,33 +46,35 @@ export const packedAppSchema = {
properties: {
id: {
type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- description: 'The unique identifier for this Note.',
- example: 'xxxxxxxxxx',
+ optional: false as const, nullable: false as const
},
name: {
type: 'string' as const,
- optional: false as const, nullable: false as const,
- description: 'アプリケーションの名前'
+ optional: false as const, nullable: false as const
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
},
- callbackUrl: {
+ lastUsedAt: {
type: 'string' as const,
- optional: false as const, nullable: true as const,
- description: 'コールバックするURL'
+ optional: false as const, nullable: false as const
},
permission: {
type: 'array' as const,
- optional: true as const, nullable: false as const,
+ optional: false as const, nullable: false as const,
items: {
type: 'string' as const,
- optional: false as const, nullable: false as const,
+ optional: false as const, nullable: false as const
}
},
secret: {
type: 'string' as const,
- optional: true as const, nullable: false as const,
- description: 'アプリケーションのシークレットキー'
+ optional: true as const, nullable: false as const
+ },
+ isAuthorized: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
}
- },
+ }
};
diff --git a/src/models/repositories/drive-file.ts b/src/models/repositories/drive-file.ts
index 3d013b8bb2..5085c76e92 100644
--- a/src/models/repositories/drive-file.ts
+++ b/src/models/repositories/drive-file.ts
@@ -182,12 +182,52 @@ export const packedDriveFileSchema = {
description: 'The size of this Drive file. (bytes)',
example: 51469
},
+ isSensitive: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Whether this Drive file is sensitive.',
+ },
+ blurhash: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ properties: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ width: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ example: 1280
+ },
+ height: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ example: 720
+ },
+ avgColor: {
+ type: 'string' as const,
+ optional: true as const, nullable: false as const,
+ example: 'rgb(40,65,87)'
+ }
+ }
+ },
url: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'url',
description: 'The URL of this Drive file.',
},
+ thumbnailUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'url',
+ description: 'The thumbnail URL of this Drive file.',
+ },
+ comment: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
folderId: {
type: 'string' as const,
optional: false as const, nullable: true as const,
@@ -195,10 +235,24 @@ export const packedDriveFileSchema = {
description: 'The parent folder ID of this Drive file.',
example: 'xxxxxxxxxx',
},
- isSensitive: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- description: 'Whether this Drive file is sensitive.',
+ folder: {
+ type: 'object' as const,
+ optional: true as const, nullable: true as const,
+ description: 'The parent folder of this Drive file.',
+ ref: 'DriveFolder'
},
+ userId: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id',
+ description: 'Owner ID of this Drive file.',
+ example: 'xxxxxxxxxx',
+ },
+ user: {
+ type: 'object' as const,
+ optional: true as const, nullable: true as const,
+ description: 'Owner of this Drive file.',
+ ref: 'User'
+ }
},
};
diff --git a/src/models/repositories/federation-instance.ts b/src/models/repositories/federation-instance.ts
new file mode 100644
index 0000000000..c6b08dc101
--- /dev/null
+++ b/src/models/repositories/federation-instance.ts
@@ -0,0 +1,106 @@
+import config from '../../config';
+
+export const packedFederationInstanceSchema = {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ caughtAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time'
+ },
+ host: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ example: 'misskey.example.com'
+ },
+ usersCount: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ notesCount: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ followingCount: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ followersCount: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ driveUsage: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ driveFiles: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ latestRequestSentAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'date-time'
+ },
+ lastCommunicatedAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time'
+ },
+ isNotResponding: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isSuspended: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ softwareName: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ example: 'misskey'
+ },
+ softwareVersion: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ example: config.version
+ },
+ openRegistrations: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: true as const,
+ example: true
+ },
+ name: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ description: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ maintainerName: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ maintainerEmail: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ iconUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'url'
+ },
+ infoUpdatedAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'date-time'
+ }
+ }
+};
diff --git a/src/models/repositories/queue.ts b/src/models/repositories/queue.ts
new file mode 100644
index 0000000000..161751ddc8
--- /dev/null
+++ b/src/models/repositories/queue.ts
@@ -0,0 +1,30 @@
+export const packedQueueCountSchema = {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ waiting: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ active: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ completed: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ failed: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ delayed: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ paused: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+};
diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts
index 7502e7a08e..3a6ab48c5f 100644
--- a/src/models/repositories/user.ts
+++ b/src/models/repositories/user.ts
@@ -330,22 +330,22 @@ export const packedUserSchema = {
description: 'The unique identifier for this User.',
example: 'xxxxxxxxxx',
},
+ name: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const,
+ description: 'The name of the user, as they’ve defined it.',
+ example: '藍'
+ },
username: {
type: 'string' as const,
nullable: false as const, optional: false as const,
description: 'The screen name, handle, or alias that this user identifies themselves with.',
example: 'ai'
},
- name: {
+ host: {
type: 'string' as const,
nullable: true as const, optional: false as const,
- description: 'The name of the user, as they’ve defined it.',
- example: '藍'
- },
- url: {
- type: 'string' as const,
- format: 'url',
- nullable: true as const, optional: true as const,
+ example: 'misskey.example.com'
},
avatarUrl: {
type: 'string' as const,
@@ -356,6 +356,80 @@ export const packedUserSchema = {
type: 'any' as const,
nullable: true as const, optional: false as const,
},
+ avatarColor: {
+ type: 'any' as const,
+ nullable: true as const, optional: false as const,
+ default: null
+ },
+ isAdmin: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const,
+ description: 'Whether this account is the admin.',
+ default: false
+ },
+ isModerator: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const,
+ description: 'Whether this account is a moderator.',
+ default: false
+ },
+ isBot: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const,
+ description: 'Whether this account is a bot.'
+ },
+ isCat: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const,
+ description: 'Whether this account is a cat.'
+ },
+ emojis: {
+ type: 'array' as const,
+ nullable: false as const, optional: false as const,
+ items: {
+ type: 'object' as const,
+ nullable: false as const, optional: false as const,
+ properties: {
+ name: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ },
+ host: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ url: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ format: 'url'
+ },
+ aliases: {
+ type: 'array' as const,
+ nullable: false as const, optional: false as const,
+ items: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ }
+ }
+ }
+ }
+ },
+ url: {
+ type: 'string' as const,
+ format: 'url',
+ nullable: true as const, optional: true as const,
+ },
+ createdAt: {
+ type: 'string' as const,
+ nullable: false as const, optional: true as const,
+ format: 'date-time',
+ description: 'The date that the user account was created on Misskey.'
+ },
+ updatedAt: {
+ type: 'string' as const,
+ nullable: true as const, optional: true as const,
+ format: 'date-time',
+ },
bannerUrl: {
type: 'string' as const,
format: 'url',
@@ -365,14 +439,19 @@ export const packedUserSchema = {
type: 'any' as const,
nullable: true as const, optional: true as const,
},
- emojis: {
+ bannerColor: {
type: 'any' as const,
- nullable: true as const, optional: false as const,
+ nullable: true as const, optional: true as const,
+ default: null
},
- host: {
- type: 'string' as const,
- nullable: true as const, optional: false as const,
- example: 'misskey.example.com'
+ isLocked: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const,
+ },
+ isSuspended: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const,
+ example: false
},
description: {
type: 'string' as const,
@@ -380,25 +459,33 @@ export const packedUserSchema = {
description: 'The user-defined UTF-8 string describing their account.',
example: 'Hi masters, I am Ai!'
},
- birthday: {
+ location: {
type: 'string' as const,
nullable: true as const, optional: true as const,
- example: '2018-03-12'
- },
- createdAt: {
- type: 'string' as const,
- nullable: false as const, optional: true as const,
- format: 'date-time',
- description: 'The date that the user account was created on Misskey.'
},
- updatedAt: {
+ birthday: {
type: 'string' as const,
nullable: true as const, optional: true as const,
- format: 'date-time',
+ example: '2018-03-12'
},
- location: {
- type: 'string' as const,
- nullable: true as const, optional: true as const,
+ fields: {
+ type: 'array' as const,
+ nullable: false as const, optional: false as const,
+ items: {
+ type: 'object' as const,
+ nullable: false as const, optional: false as const,
+ properties: {
+ name: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ },
+ value: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ }
+ },
+ maxLength: 4
+ }
},
followersCount: {
type: 'number' as const,
@@ -415,11 +502,6 @@ export const packedUserSchema = {
nullable: false as const, optional: true as const,
description: 'The number of Notes (including renotes) issued by the user.'
},
- isBot: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- description: 'Whether this account is a bot.'
- },
pinnedNoteIds: {
type: 'array' as const,
nullable: false as const, optional: true as const,
@@ -438,32 +520,131 @@ export const packedUserSchema = {
ref: 'Note'
}
},
- isCat: {
+ pinnedPageId: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ pinnedPage: {
+ type: 'object' as const,
+ nullable: true as const, optional: false as const,
+ ref: 'Page'
+ },
+ twoFactorEnabled: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const,
+ default: false
+ },
+ usePasswordLessLogin: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const,
+ default: false
+ },
+ securityKeys: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const,
+ default: false
+ },
+ avatarId: {
+ type: 'string' as const,
+ nullable: true as const, optional: true as const,
+ format: 'id'
+ },
+ bannerId: {
+ type: 'string' as const,
+ nullable: true as const, optional: true as const,
+ format: 'id'
+ },
+ autoWatch: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const
+ },
+ injectFeaturedNote: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const
+ },
+ alwaysMarkNsfw: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const
+ },
+ carefulBot: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const
+ },
+ autoAcceptFollowed: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const
+ },
+ hasUnreadSpecifiedNotes: {
type: 'boolean' as const,
nullable: false as const, optional: true as const,
- description: 'Whether this account is a cat.'
},
- isAdmin: {
+ hasUnreadMentions: {
type: 'boolean' as const,
nullable: false as const, optional: true as const,
- description: 'Whether this account is the admin.'
},
- isModerator: {
+ hasUnreadAnnouncement: {
type: 'boolean' as const,
nullable: false as const, optional: true as const,
- description: 'Whether this account is a moderator.'
},
- isLocked: {
+ hasUnreadAntenna: {
type: 'boolean' as const,
nullable: false as const, optional: true as const,
},
- hasUnreadSpecifiedNotes: {
+ hasUnreadChannel: {
type: 'boolean' as const,
nullable: false as const, optional: true as const,
},
- hasUnreadMentions: {
+ hasUnreadMessagingMessage: {
type: 'boolean' as const,
nullable: false as const, optional: true as const,
},
+ hasUnreadNotification: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const,
+ },
+ hasPendingReceivedFollowRequest: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: true as const,
+ },
+ integrations: {
+ type: 'object' as const,
+ nullable: false as const, optional: true as const
+ },
+ mutedWords: {
+ type: 'array' as const,
+ nullable: false as const, optional: true as const
+ },
+ mutingNotificationTypes: {
+ type: 'array' as const,
+ nullable: false as const, optional: true as const
+ },
+ isFollowing: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ hasPendingFollowRequestFromYou: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ hasPendingFollowRequestToYou: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ isFollowed: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ isBlocking: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ isBlocked: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ isMuted: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ }
},
};
diff --git a/src/server/api/endpoints/admin/abuse-user-reports.ts b/src/server/api/endpoints/admin/abuse-user-reports.ts
index 6a7f380e16..d63997d203 100644
--- a/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -5,6 +5,11 @@ import { AbuseUserReports } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
+ desc: {
+ 'ja-JP': '通報一覧を表示します。',
+ 'en-US': 'Show list of abuse user reports.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
@@ -46,6 +51,74 @@ export const meta = {
]),
default: 'combined'
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ format: 'id',
+ description: 'The unique identifier for this User.',
+ example: 'xxxxxxxxxx',
+ },
+ createdAt: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ format: 'date-time',
+ description: 'The date that the abuse user report was created on Misskey.'
+ },
+ comment: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ description: 'The content of the report.',
+ },
+ resolved: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const,
+ description: 'Returns whether this report has been resolved',
+ example: false
+ },
+ reporterId: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ format: 'id',
+ description: 'Reporter\'s user ID.'
+ },
+ targetUserId: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ format: 'id',
+ description: 'User ID of the person to be reported.'
+ },
+ assigneeId: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const,
+ format: 'id',
+ description: 'User ID of the person who responded to the report.'
+ },
+ reporter: {
+ type: 'object' as const,
+ nullable: false as const, optional: false as const,
+ ref: 'User'
+ },
+ targetUser: {
+ type: 'object' as const,
+ nullable: false as const, optional: false as const,
+ ref: 'User'
+ },
+ assignee: {
+ type: 'object' as const,
+ nullable: true as const, optional: true as const,
+ ref: 'User'
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/accounts/create.ts b/src/server/api/endpoints/admin/accounts/create.ts
index 98e5642bed..27ceca158b 100644
--- a/src/server/api/endpoints/admin/accounts/create.ts
+++ b/src/server/api/endpoints/admin/accounts/create.ts
@@ -3,6 +3,11 @@ import { Users } from '../../../../../models';
import { signup } from '../../../common/signup';
export const meta = {
+ desc: {
+ 'ja-JP': 'アカウントを作成します。',
+ 'en-US': 'Create a account.'
+ },
+
tags: ['admin'],
params: {
@@ -13,6 +18,19 @@ export const meta = {
password: {
validator: Users.validatePassword,
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User',
+ properties: {
+ token: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Token to access this user.'
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/announcements/create.ts b/src/server/api/endpoints/admin/announcements/create.ts
index f9fb30f49f..dc01621c75 100644
--- a/src/server/api/endpoints/admin/announcements/create.ts
+++ b/src/server/api/endpoints/admin/announcements/create.ts
@@ -4,6 +4,11 @@ import { Announcements } from '../../../../../models';
import { genId } from '../../../../../misc/gen-id';
export const meta = {
+ desc: {
+ 'ja-JP': 'アナウンスを作成します。',
+ 'en-US': 'Create a announcement.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
@@ -19,6 +24,47 @@ export const meta = {
imageUrl: {
validator: $.nullable.str.min(1)
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'The unique identifier for this Announcement.',
+ example: 'xxxxxxxxxx',
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time',
+ description: 'The date that the Announcement was created.'
+ },
+ updatedAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'date-time',
+ description: 'The date that the Announcement was updated.'
+ },
+ title: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Announcement title.'
+ },
+ text: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Announcement text.'
+ },
+ imageUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ description: 'Announcement image.'
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/announcements/delete.ts b/src/server/api/endpoints/admin/announcements/delete.ts
index 1b7a0bf921..6c9c065757 100644
--- a/src/server/api/endpoints/admin/announcements/delete.ts
+++ b/src/server/api/endpoints/admin/announcements/delete.ts
@@ -10,6 +10,11 @@ export const meta = {
requireCredential: true as const,
requireModerator: true,
+ desc: {
+ 'ja-JP': 'アナウンスを削除します。',
+ 'en-US': 'Delete a announcement.'
+ },
+
params: {
id: {
validator: $.type(ID)
diff --git a/src/server/api/endpoints/admin/announcements/list.ts b/src/server/api/endpoints/admin/announcements/list.ts
index 4c3af5a318..5489b0d2c7 100644
--- a/src/server/api/endpoints/admin/announcements/list.ts
+++ b/src/server/api/endpoints/admin/announcements/list.ts
@@ -5,6 +5,11 @@ import { Announcements, AnnouncementReads } from '../../../../../models';
import { makePaginationQuery } from '../../../common/make-pagination-query';
export const meta = {
+ desc: {
+ 'ja-JP': 'アナウンスのリストを表示します。',
+ 'en-US': 'List announcements.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
@@ -23,6 +28,56 @@ export const meta = {
untilId: {
validator: $.optional.type(ID),
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'The unique identifier for this Announcement.',
+ example: 'xxxxxxxxxx',
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time',
+ description: 'The date that the Announcement was created.'
+ },
+ updatedAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'date-time',
+ description: 'The date that the Announcement was updated.'
+ },
+ text: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Announcement text.'
+ },
+ title: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Announcement title.'
+ },
+ imageUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ description: 'Announcement image.'
+ },
+ reads: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Number of people who read this announcement.'
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/announcements/update.ts b/src/server/api/endpoints/admin/announcements/update.ts
index fd24f8cc8e..9c4165eae0 100644
--- a/src/server/api/endpoints/admin/announcements/update.ts
+++ b/src/server/api/endpoints/admin/announcements/update.ts
@@ -5,6 +5,11 @@ import { Announcements } from '../../../../../models';
import { ApiError } from '../../../error';
export const meta = {
+ desc: {
+ 'ja-JP': 'アナウンスの内容を変更します。',
+ 'en-US': 'Update a annoucement.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts b/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
index 83397f1079..9da3b632ac 100644
--- a/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
+++ b/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
@@ -5,6 +5,11 @@ import { DriveFiles } from '../../../../models';
import { ID } from '../../../../misc/cafy-id';
export const meta = {
+ desc: {
+ 'ja-JP': '対象のユーザーのファイルを全て削除します。',
+ 'en-US': 'Delete all files to specified user.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/delete-logs.ts b/src/server/api/endpoints/admin/delete-logs.ts
index 9cb9f809d7..3719387312 100644
--- a/src/server/api/endpoints/admin/delete-logs.ts
+++ b/src/server/api/endpoints/admin/delete-logs.ts
@@ -2,6 +2,11 @@ import define from '../../define';
import { Logs } from '../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': 'ログを全て削除します。',
+ 'en-US': 'Delete all logs.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/drive/clean-remote-files.ts b/src/server/api/endpoints/admin/drive/clean-remote-files.ts
index 5a5adb8a8b..20856da1cf 100644
--- a/src/server/api/endpoints/admin/drive/clean-remote-files.ts
+++ b/src/server/api/endpoints/admin/drive/clean-remote-files.ts
@@ -2,6 +2,11 @@ import define from '../../../define';
import { createCleanRemoteFilesJob } from '../../../../../queue';
export const meta = {
+ desc: {
+ 'ja-JP': 'キャッシュされたリモートファイルをすべて削除します。',
+ 'en-US': 'Deletes all cached remote files.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/drive/cleanup.ts b/src/server/api/endpoints/admin/drive/cleanup.ts
index b76236a7f0..f4867597f3 100644
--- a/src/server/api/endpoints/admin/drive/cleanup.ts
+++ b/src/server/api/endpoints/admin/drive/cleanup.ts
@@ -4,6 +4,11 @@ import { deleteFile } from '../../../../../services/drive/delete-file';
import { DriveFiles } from '../../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': '使用されていないユーザーのファイルを削除します。',
+ 'en-US': 'Delete the unused user\'s files.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts
index f6296b8947..496050d2df 100644
--- a/src/server/api/endpoints/admin/drive/files.ts
+++ b/src/server/api/endpoints/admin/drive/files.ts
@@ -5,6 +5,11 @@ import { makePaginationQuery } from '../../../common/make-pagination-query';
import { ID } from '../../../../../misc/cafy-id';
export const meta = {
+ desc: {
+ 'ja-JP': '管理用のドライブの一覧を表示します。',
+ 'en-US': 'Displays a list of management drives.'
+ },
+
tags: ['admin'],
requireCredential: false as const,
@@ -41,6 +46,16 @@ export const meta = {
validator: $.optional.nullable.str,
default: null
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'DriveFile'
+ }
}
};
diff --git a/src/server/api/endpoints/admin/drive/show-file.ts b/src/server/api/endpoints/admin/drive/show-file.ts
index 36403bb1c3..96478a1c7d 100644
--- a/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/src/server/api/endpoints/admin/drive/show-file.ts
@@ -26,6 +26,154 @@ export const meta = {
code: 'NO_SUCH_FILE',
id: 'caf3ca38-c6e5-472e-a30c-b05377dcc240'
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'The unique identifier for this Drive file.',
+ example: 'xxxxxxxxxx',
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time',
+ description: 'The date that the Drive file was created on Misskey.'
+ },
+ userId: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id',
+ description: 'Owner ID of this Drive file.',
+ example: 'xxxxxxxxxx',
+ },
+ userHost: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ md5: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'md5',
+ description: 'The MD5 hash of this Drive file.',
+ example: '15eca7fba0480996e2245f5185bf39f2'
+ },
+ name: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'The file name with extension.',
+ example: 'lenna.jpg'
+ },
+ type: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'The MIME type of this Drive file.',
+ example: 'image/jpeg'
+ },
+ size: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ description: 'The size of this Drive file. (bytes)',
+ example: 51469
+ },
+ comment: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ blurhash: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ properties: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ width: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ example: 1280
+ },
+ height: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ example: 720
+ },
+ avgColor: {
+ type: 'string' as const,
+ optional: true as const, nullable: false as const,
+ example: 'rgb(40,65,87)'
+ }
+ }
+ },
+ storedInternal: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: true as const,
+ description: 'Indicates whether this file is stored in the same location as Misskey itself',
+ example: true
+ },
+ url: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'url',
+ description: 'The URL of this Drive file.',
+ },
+ thumbnailUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'url',
+ description: 'The thumbnail URL of this Drive file.',
+ },
+ webpublicUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'url',
+ description: 'The public URL of this Drive file.',
+ },
+ accessKey: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Access key to access this file'
+ },
+ thumbnailAccessKey: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Access key to access this file for thumbnail'
+ },
+ webpublicAccessKey: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Access key to access this file for webpublic'
+ },
+ uri: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ src: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ folderId: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id',
+ description: 'The parent folder ID of this Drive file.',
+ example: 'xxxxxxxxxx',
+ },
+ isSensitive: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Whether this Drive file is sensitive.',
+ },
+ isLink: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/emoji/copy.ts b/src/server/api/endpoints/admin/emoji/copy.ts
index 5d4e57a28f..5c3c4f6fc5 100644
--- a/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/src/server/api/endpoints/admin/emoji/copy.ts
@@ -9,6 +9,11 @@ import { ID } from '../../../../../misc/cafy-id';
import uploadFromUrl from '../../../../../services/drive/upload-from-url';
export const meta = {
+ desc: {
+ 'ja-JP': '選択したカスタム絵文字をコピーします。',
+ 'en-US': 'Copies the selected custom emoji.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
@@ -26,6 +31,19 @@ export const meta = {
code: 'NO_SUCH_EMOJI',
id: 'e2785b66-dca3-4087-9cac-b93c541cc425'
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'New copied emoji ID'
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/emoji/list-remote.ts b/src/server/api/endpoints/admin/emoji/list-remote.ts
index cbdcaa681c..81029fbbba 100644
--- a/src/server/api/endpoints/admin/emoji/list-remote.ts
+++ b/src/server/api/endpoints/admin/emoji/list-remote.ts
@@ -7,7 +7,8 @@ import { ID } from '../../../../../misc/cafy-id';
export const meta = {
desc: {
- 'ja-JP': 'カスタム絵文字を取得します。'
+ 'ja-JP': 'リモートのカスタム絵文字一覧を取得します。',
+ 'en-US': 'Gets a list of remote custom emojis.'
},
tags: ['admin'],
@@ -38,6 +39,52 @@ export const meta = {
untilId: {
validator: $.optional.type(ID),
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'The unique identifier for this Emoji.'
+ },
+ aliases: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ description: 'List to make it easier to be displayed as a candidate when entering emoji.',
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ name: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Official name of custom emoji.'
+ },
+ category: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ description: 'Names categorized in the emoji list.'
+ },
+ host: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ description: 'If it is another server, the FQDN will be returned here.'
+ },
+ url: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Image URL of emoji.'
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts
index bd3e294851..6d042b0afd 100644
--- a/src/server/api/endpoints/admin/emoji/list.ts
+++ b/src/server/api/endpoints/admin/emoji/list.ts
@@ -7,7 +7,8 @@ import { Emoji } from '../../../../../models/entities/emoji';
export const meta = {
desc: {
- 'ja-JP': 'カスタム絵文字を取得します。'
+ 'ja-JP': 'カスタム絵文字一覧を取得します。',
+ 'en-US': 'List custom emojis.'
},
tags: ['admin'],
@@ -33,6 +34,52 @@ export const meta = {
untilId: {
validator: $.optional.type(ID),
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'The unique identifier for this Emoji.'
+ },
+ aliases: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ description: 'List to make it easier to be displayed as a candidate when entering emoji.',
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ name: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Official name of custom emoji.'
+ },
+ category: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ description: 'Names categorized in the emoji list.'
+ },
+ host: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ description: 'If it is another server, the FQDN will be returned here.'
+ },
+ url: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Image URL of emoji.'
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/federation/delete-all-files.ts b/src/server/api/endpoints/admin/federation/delete-all-files.ts
index eef53cd92c..c0a8c94f4c 100644
--- a/src/server/api/endpoints/admin/federation/delete-all-files.ts
+++ b/src/server/api/endpoints/admin/federation/delete-all-files.ts
@@ -4,6 +4,11 @@ import { deleteFile } from '../../../../../services/drive/delete-file';
import { DriveFiles } from '../../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': '指定したドメインのファイルを全て削除します。',
+ 'en-US': 'Deletes all files in the specified domain.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/federation/remove-all-following.ts b/src/server/api/endpoints/admin/federation/remove-all-following.ts
index e593193552..4a6f6e6261 100644
--- a/src/server/api/endpoints/admin/federation/remove-all-following.ts
+++ b/src/server/api/endpoints/admin/federation/remove-all-following.ts
@@ -4,6 +4,11 @@ import deleteFollowing from '../../../../../services/following/delete';
import { Followings, Users } from '../../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': '指定したドメインの全ユーザーのフォローを全て解除します。',
+ 'en-US': 'Unfollow all users in the specified domain.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/federation/update-instance.ts b/src/server/api/endpoints/admin/federation/update-instance.ts
index 8f8b3334b3..7206e4fb2e 100644
--- a/src/server/api/endpoints/admin/federation/update-instance.ts
+++ b/src/server/api/endpoints/admin/federation/update-instance.ts
@@ -4,6 +4,11 @@ import { Instances } from '../../../../../models';
import { toPuny } from '../../../../../misc/convert-host';
export const meta = {
+ desc: {
+ 'ja-JP': '指定したドメインのアクティビティの配信を停止するかを選択します。',
+ 'en-US': 'Select whether to undeliver the activity for the specified domain.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/get-table-stats.ts b/src/server/api/endpoints/admin/get-table-stats.ts
index eb9f26fc05..351c230033 100644
--- a/src/server/api/endpoints/admin/get-table-stats.ts
+++ b/src/server/api/endpoints/admin/get-table-stats.ts
@@ -6,6 +6,7 @@ export const meta = {
requireModerator: true,
desc: {
+ 'ja-JP': 'テーブル情報を取得します。',
'en-US': 'Get table stats'
},
@@ -13,6 +14,17 @@ export const meta = {
params: {
},
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ example: {
+ migrations: {
+ count: 66,
+ size: 32768
+ },
+ }
+ }
};
export default define(meta, async () => {
diff --git a/src/server/api/endpoints/admin/invite.ts b/src/server/api/endpoints/admin/invite.ts
index 52e3da8f84..4529d16adf 100644
--- a/src/server/api/endpoints/admin/invite.ts
+++ b/src/server/api/endpoints/admin/invite.ts
@@ -5,7 +5,8 @@ import { genId } from '../../../../misc/gen-id';
export const meta = {
desc: {
- 'ja-JP': '招待コードを発行します。'
+ 'ja-JP': '招待コードを発行します。',
+ 'en-US': 'Issue an invitation code.'
},
tags: ['admin'],
@@ -13,7 +14,22 @@ export const meta = {
requireCredential: true as const,
requireModerator: true,
- params: {}
+ params: {},
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ code: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Give this code to the applicant for registration.',
+ example: '2ERUA5VR',
+ maxLength: 8,
+ minLength: 8
+ }
+ }
+ }
};
export default define(meta, async () => {
diff --git a/src/server/api/endpoints/admin/logs.ts b/src/server/api/endpoints/admin/logs.ts
index fef2eab80b..5e19b1a6f4 100644
--- a/src/server/api/endpoints/admin/logs.ts
+++ b/src/server/api/endpoints/admin/logs.ts
@@ -4,6 +4,11 @@ import { Logs } from '../../../../models';
import { Brackets } from 'typeorm';
export const meta = {
+ desc: {
+ 'ja-JP': 'ログを表示します。',
+ 'en-US': 'Show logs.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
@@ -24,6 +29,60 @@ export const meta = {
validator: $.optional.nullable.str,
default: null as any
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'The unique identifier for this log.',
+ example: 'xxxxxxxxxx',
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time',
+ description: 'The date that the Drive file was created on Misskey.'
+ },
+ domain: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: true as const, nullable: false as const
+ }
+ },
+ level: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ worker: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ machine: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'The name of the running machine.'
+ },
+ message: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Log body.'
+ },
+ data: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/promo/create.ts b/src/server/api/endpoints/admin/promo/create.ts
index e3c03d2f4b..8b96d563c2 100644
--- a/src/server/api/endpoints/admin/promo/create.ts
+++ b/src/server/api/endpoints/admin/promo/create.ts
@@ -6,6 +6,11 @@ import { getNote } from '../../../common/getters';
import { PromoNotes } from '../../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': 'プロモーションを作成します。',
+ 'en-US': 'Create a promotion.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/queue/clear.ts b/src/server/api/endpoints/admin/queue/clear.ts
index 0375f55f01..bc55a02ec1 100644
--- a/src/server/api/endpoints/admin/queue/clear.ts
+++ b/src/server/api/endpoints/admin/queue/clear.ts
@@ -3,6 +3,11 @@ import { destroy } from '../../../../../queue';
import { insertModerationLog } from '../../../../../services/insert-moderation-log';
export const meta = {
+ desc: {
+ 'ja-JP': 'ジョブキューを全て削除します。',
+ 'en-US': 'Delete all job queues.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/queue/deliver-delayed.ts b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
index 6bfb5b50fe..221aa35e48 100644
--- a/src/server/api/endpoints/admin/queue/deliver-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
@@ -2,12 +2,42 @@ import define from '../../../define';
import { deliverQueue } from '../../../../../queue';
export const meta = {
+ desc: {
+ 'ja-JP': '他サーバーへ送るキューの遅延一覧を返します。',
+ 'en-US': 'Returns a list of delays in queues sent to other servers.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
requireModerator: true,
params: {
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ anyOf: [
+ {
+ type: 'string' as const,
+ description: 'FQDN to fediverse server'
+ },
+ {
+ type: 'number' as const,
+ description: 'Delayed queue counts'
+ }
+ ]
+ }
+ },
+ example: [[
+ 'example.com',
+ 12
+ ]]
}
};
diff --git a/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
index 4627cefdd8..52f67cb514 100644
--- a/src/server/api/endpoints/admin/queue/inbox-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
@@ -2,12 +2,42 @@ import define from '../../../define';
import { inboxQueue } from '../../../../../queue';
export const meta = {
+ desc: {
+ 'ja-JP': 'このサーバーへのキューの遅延一覧を返します。',
+ 'en-US': 'Returns a list of queue delays to this server.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
requireModerator: true,
params: {
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ anyOf: [
+ {
+ type: 'string' as const,
+ description: 'FQDN to fediverse server'
+ },
+ {
+ type: 'number' as const,
+ description: 'Delayed queue counts'
+ }
+ ]
+ }
+ },
+ example: [[
+ 'example.com',
+ 12
+ ]]
}
};
diff --git a/src/server/api/endpoints/admin/queue/jobs.ts b/src/server/api/endpoints/admin/queue/jobs.ts
index 0cd3f40d4e..5ab78e3c48 100644
--- a/src/server/api/endpoints/admin/queue/jobs.ts
+++ b/src/server/api/endpoints/admin/queue/jobs.ts
@@ -3,6 +3,11 @@ import define from '../../../define';
import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '../../../../../queue';
export const meta = {
+ desc: {
+ 'ja-JP': 'ジョブ一覧を表示します。',
+ 'en-US': 'Display the job list.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
@@ -21,6 +26,38 @@ export const meta = {
validator: $.optional.num,
default: 50
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ data: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const
+ },
+ attempts: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ maxAttempts: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ timestamp: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/queue/stats.ts b/src/server/api/endpoints/admin/queue/stats.ts
index da29c5285e..bd64d2ac06 100644
--- a/src/server/api/endpoints/admin/queue/stats.ts
+++ b/src/server/api/endpoints/admin/queue/stats.ts
@@ -2,12 +2,36 @@ import define from '../../../define';
import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '../../../../../queue';
export const meta = {
+ desc: {
+ 'ja-JP': 'キューの状態を返します。',
+ 'en-US': 'Returns the status of the queue.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
requireModerator: true,
- params: {}
+ params: {},
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ deliver: {
+ ref: 'QueueCount'
+ },
+ inbox: {
+ ref: 'QueueCount'
+ },
+ db: {
+ ref: 'QueueCount'
+ },
+ objectStorage: {
+ ref: 'QueueCount'
+ }
+ }
+ }
};
export default define(meta, async (ps) => {
diff --git a/src/server/api/endpoints/admin/relays/add.ts b/src/server/api/endpoints/admin/relays/add.ts
index bcda1050e8..831e05c835 100644
--- a/src/server/api/endpoints/admin/relays/add.ts
+++ b/src/server/api/endpoints/admin/relays/add.ts
@@ -5,7 +5,8 @@ import { ApiError } from '../../../error';
export const meta = {
desc: {
- 'ja-JP': 'Add relay'
+ 'ja-JP': 'リレーを追加します。',
+ 'en-US': 'Add relay'
},
tags: ['admin'],
@@ -25,6 +26,33 @@ export const meta = {
code: 'INVALID_URL',
id: 'fb8c92d3-d4e5-44e7-b3d4-800d5cef8b2c'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ inbox: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'url'
+ },
+ status: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ default: 'requesting',
+ enum: [
+ 'requesting',
+ 'accepted',
+ 'rejected'
+ ]
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/relays/list.ts b/src/server/api/endpoints/admin/relays/list.ts
index 3b132f73b3..da05ac0a24 100644
--- a/src/server/api/endpoints/admin/relays/list.ts
+++ b/src/server/api/endpoints/admin/relays/list.ts
@@ -3,7 +3,8 @@ import { listRelay } from '../../../../../services/relay';
export const meta = {
desc: {
- 'ja-JP': 'List relay'
+ 'ja-JP': 'リレー一覧を表示します。',
+ 'en-US': 'List relay'
},
tags: ['admin'],
@@ -13,6 +14,37 @@ export const meta = {
params: {
},
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ inbox: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'url'
+ },
+ status: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ default: 'requesting',
+ enum: [
+ 'requesting',
+ 'accepted',
+ 'rejected'
+ ]
+ }
+ }
+ }
+ }
};
export default define(meta, async (ps, user) => {
diff --git a/src/server/api/endpoints/admin/relays/remove.ts b/src/server/api/endpoints/admin/relays/remove.ts
index df95e0329a..572d51cfca 100644
--- a/src/server/api/endpoints/admin/relays/remove.ts
+++ b/src/server/api/endpoints/admin/relays/remove.ts
@@ -4,7 +4,8 @@ import { removeRelay } from '../../../../../services/relay';
export const meta = {
desc: {
- 'ja-JP': 'Remove relay'
+ 'ja-JP': 'リレーを削除します。',
+ 'en-US': 'Remove relay'
},
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/reset-password.ts b/src/server/api/endpoints/admin/reset-password.ts
index 1b8a5ee651..2f55cf23a1 100644
--- a/src/server/api/endpoints/admin/reset-password.ts
+++ b/src/server/api/endpoints/admin/reset-password.ts
@@ -8,6 +8,7 @@ import { Users, UserProfiles } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したユーザーのパスワードをリセットします。',
+ 'en-US': 'Reset password to specified user.'
},
tags: ['admin'],
@@ -23,6 +24,19 @@ export const meta = {
'en-US': 'The user ID which you want to suspend'
}
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ password: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ minLength: 8,
+ maxLength: 8
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
index 0a62b5f365..f8cd8def57 100644
--- a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
+++ b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
@@ -4,6 +4,11 @@ import define from '../../define';
import { AbuseUserReports } from '../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': '指定した通報を解決済みにします。',
+ 'en-US': 'Marks the specified report as resolved.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/resync-chart.ts b/src/server/api/endpoints/admin/resync-chart.ts
index 84e19d37e6..13254a3ca3 100644
--- a/src/server/api/endpoints/admin/resync-chart.ts
+++ b/src/server/api/endpoints/admin/resync-chart.ts
@@ -3,6 +3,11 @@ import { driveChart, notesChart, usersChart, instanceChart } from '../../../../s
import { insertModerationLog } from '../../../../services/insert-moderation-log';
export const meta = {
+ desc: {
+ 'ja-JP': 'チャートを再同期します。',
+ 'en-US': 'Resync the chart.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/send-email.ts b/src/server/api/endpoints/admin/send-email.ts
index c0e77e1621..51f92230a2 100644
--- a/src/server/api/endpoints/admin/send-email.ts
+++ b/src/server/api/endpoints/admin/send-email.ts
@@ -3,6 +3,11 @@ import define from '../../define';
import { sendEmail } from '../../../../services/send-email';
export const meta = {
+ desc: {
+ 'ja-JP': 'メールを送信します。',
+ 'en-US': 'Send a mail.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/server-info.ts b/src/server/api/endpoints/admin/server-info.ts
index de4e933471..3b48a811e5 100644
--- a/src/server/api/endpoints/admin/server-info.ts
+++ b/src/server/api/endpoints/admin/server-info.ts
@@ -9,12 +9,100 @@ export const meta = {
requireModerator: true,
desc: {
+ 'ja-JP': 'サーバー情報を表示します。',
+ 'en-US': 'Show server information.'
},
tags: ['admin', 'meta'],
params: {
},
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ machine: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'The name of the running server'
+ },
+ os: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'OS used by the server',
+ example: 'linux'
+ },
+ node: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Version of Node.js'
+ },
+ psql: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Version of Postgresql'
+ },
+ cpu: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ model: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'The name of the CPU you are using'
+ },
+ cores: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Number of CPU cores used (number of logical processors)'
+ }
+ }
+ },
+ mem: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ total: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ format: 'bytes',
+ description: 'RAM capacity.'
+ }
+ }
+ },
+ fs: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ total: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ format: 'bytes',
+ description: 'Total storage capacity.'
+ },
+ used: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ format: 'bytes',
+ description: 'Amount of storage used'
+ }
+ }
+ },
+ net: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ interface: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'The interface name of your network.',
+ example: 'eth0'
+ }
+ }
+ }
+ }
+ }
};
export default define(meta, async () => {
diff --git a/src/server/api/endpoints/admin/show-moderation-logs.ts b/src/server/api/endpoints/admin/show-moderation-logs.ts
index acdfda51ab..f41d91647a 100644
--- a/src/server/api/endpoints/admin/show-moderation-logs.ts
+++ b/src/server/api/endpoints/admin/show-moderation-logs.ts
@@ -5,6 +5,11 @@ import { ModerationLogs } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
+ desc: {
+ 'ja-JP': 'モデレーションログ一覧を表示します。',
+ 'en-US': 'Display the moderation log list.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
@@ -23,6 +28,45 @@ export const meta = {
untilId: {
validator: $.optional.type(ID),
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time'
+ },
+ type: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ info: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const
+ },
+ userId: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ user: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/show-user.ts b/src/server/api/endpoints/admin/show-user.ts
index ea4df141f3..63889a9e6b 100644
--- a/src/server/api/endpoints/admin/show-user.ts
+++ b/src/server/api/endpoints/admin/show-user.ts
@@ -5,7 +5,8 @@ import { Users } from '../../../../models';
export const meta = {
desc: {
- 'ja-JP': '指定したユーザーの情報を取得します。',
+ 'ja-JP': '指定したユーザーの情報を取得します(管理者向け)。',
+ 'en-US': 'Gets the information of the specified user (for administrators).'
},
tags: ['admin'],
@@ -21,6 +22,149 @@ export const meta = {
'en-US': 'The user ID which you want to suspend'
}
},
+ },
+
+ res: {
+ type: 'object' as const,
+ nullable: false as const, optional: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ format: 'id'
+ },
+ createdAt: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ format: 'date-time'
+ },
+ updatedAt: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const,
+ format: 'date-time'
+ },
+ lastFetchedAt: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ username: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ },
+ name: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ },
+ folowersCount: {
+ type: 'number' as const,
+ nullable: false as const, optional: false as const
+ },
+ followingCount: {
+ type: 'number' as const,
+ nullable: false as const, optional: false as const
+ },
+ notesCount: {
+ type: 'number' as const,
+ nullable: false as const, optional: false as const
+ },
+ avatarId: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ bannerId: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ tags: {
+ type: 'array' as const,
+ nullable: false as const, optional: false as const,
+ items: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ }
+ },
+ avatarUrl: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const,
+ format: 'url'
+ },
+ bannerUrl: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const,
+ format: 'url'
+ },
+ avatarBlurhash: {
+ type: 'any' as const,
+ nullable: true as const, optional: false as const,
+ default: null
+ },
+ bannerBlurhash: {
+ type: 'any' as const,
+ nullable: true as const, optional: false as const,
+ default: null
+ },
+ isSuspended: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const
+ },
+ isSilenced: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const
+ },
+ isLocked: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const,
+ },
+ isBot: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const
+ },
+ isCat: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const
+ },
+ isAdmin: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const
+ },
+ isModerator: {
+ type: 'boolean' as const,
+ nullable: false as const, optional: false as const
+ },
+ emojis: {
+ type: 'array' as const,
+ nullable: false as const, optional: false as const,
+ items: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ }
+ },
+ host: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ inbox: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ sharedInbox: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ featured: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ uri: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ token: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ default: '<MASKED>'
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts
index 03abe7a57b..6ee4aa877b 100644
--- a/src/server/api/endpoints/admin/show-users.ts
+++ b/src/server/api/endpoints/admin/show-users.ts
@@ -3,6 +3,11 @@ import define from '../../define';
import { Users } from '../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': '管理者用のユーザー一覧を表示します。',
+ 'en-US': 'Displays a list of users for administrators.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
@@ -61,6 +66,16 @@ export const meta = {
validator: $.optional.str,
default: null
}
+ },
+
+ res: {
+ type: 'array' as const,
+ nullable: false as const, optional: false as const,
+ items: {
+ type: 'object' as const,
+ nullable: false as const, optional: false as const,
+ ref: 'User'
+ }
}
};
@@ -71,7 +86,7 @@ export default define(meta, async (ps, me) => {
case 'available': query.where('user.isSuspended = FALSE'); break;
case 'admin': query.where('user.isAdmin = TRUE'); break;
case 'moderator': query.where('user.isModerator = TRUE'); break;
- case 'adminOrModerator': query.where('user.isAdmin = TRUE OR isModerator = TRUE'); break;
+ case 'adminOrModerator': query.where('user.isAdmin = TRUE OR user.isModerator = TRUE'); break;
case 'alive': query.where('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break;
case 'silenced': query.where('user.isSilenced = TRUE'); break;
case 'suspended': query.where('user.isSuspended = TRUE'); break;
diff --git a/src/server/api/endpoints/admin/vacuum.ts b/src/server/api/endpoints/admin/vacuum.ts
index e041e65431..14136c751c 100644
--- a/src/server/api/endpoints/admin/vacuum.ts
+++ b/src/server/api/endpoints/admin/vacuum.ts
@@ -4,6 +4,11 @@ import { getConnection } from 'typeorm';
import { insertModerationLog } from '../../../../services/insert-moderation-log';
export const meta = {
+ desc: {
+ 'ja-JP': 'データベースのメンテナンスを行います。',
+ 'en-US': 'Perform database maintenance.'
+ },
+
tags: ['admin'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/announcements.ts b/src/server/api/endpoints/announcements.ts
index ca46192de2..5d0fd9bdfa 100644
--- a/src/server/api/endpoints/announcements.ts
+++ b/src/server/api/endpoints/announcements.ts
@@ -5,6 +5,11 @@ import { Announcements, AnnouncementReads } from '../../../models';
import { makePaginationQuery } from '../common/make-pagination-query';
export const meta = {
+ desc: {
+ 'ja-JP': 'アナウンスを表示します。',
+ 'en-US': 'Show announcements.'
+ },
+
tags: ['meta'],
requireCredential: false as const,
@@ -27,6 +32,56 @@ export const meta = {
untilId: {
validator: $.optional.type(ID),
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'The unique identifier for this Announcement.',
+ example: 'xxxxxxxxxx',
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time',
+ description: 'The date that the Announcement was created.'
+ },
+ updatedAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'date-time',
+ description: 'The date that the Announcement was updated.'
+ },
+ text: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Announcement text.'
+ },
+ title: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Announcement title.'
+ },
+ imageUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ description: 'Announcement image.'
+ },
+ isRead: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Indicates that you have read this announcement'
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/antennas/create.ts b/src/server/api/endpoints/antennas/create.ts
index bc79385260..b5f0eead2a 100644
--- a/src/server/api/endpoints/antennas/create.ts
+++ b/src/server/api/endpoints/antennas/create.ts
@@ -6,6 +6,11 @@ import { ID } from '../../../../misc/cafy-id';
import { ApiError } from '../../error';
export const meta = {
+ desc: {
+ 'ja-JP': 'アンテナを作成します。',
+ 'en-US': 'Create a antenna.'
+ },
+
tags: ['antennas'],
requireCredential: true as const,
@@ -70,6 +75,12 @@ export const meta = {
code: 'NO_SUCH_USER_GROUP',
id: 'aa3c0b9a-8cae-47c0-92ac-202ce5906682'
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Antenna'
}
};
diff --git a/src/server/api/endpoints/antennas/delete.ts b/src/server/api/endpoints/antennas/delete.ts
index 087834a7bd..9008c37c8e 100644
--- a/src/server/api/endpoints/antennas/delete.ts
+++ b/src/server/api/endpoints/antennas/delete.ts
@@ -5,6 +5,11 @@ import { ApiError } from '../../error';
import { Antennas } from '../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': 'アンテナを削除します。',
+ 'en-US': 'Delete a antenna.'
+ },
+
tags: ['antennas'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/antennas/list.ts b/src/server/api/endpoints/antennas/list.ts
index cbc4e827b9..bc9685887f 100644
--- a/src/server/api/endpoints/antennas/list.ts
+++ b/src/server/api/endpoints/antennas/list.ts
@@ -2,11 +2,26 @@ import define from '../../define';
import { Antennas } from '../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': 'アンテナの一覧を取得します。',
+ 'en-US': 'Get a list of antennas.'
+ },
+
tags: ['antennas', 'account'],
requireCredential: true as const,
kind: 'read:account',
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Antenna'
+ }
+ }
};
export default define(meta, async (ps, me) => {
diff --git a/src/server/api/endpoints/antennas/notes.ts b/src/server/api/endpoints/antennas/notes.ts
index 402a2758bb..750fc080cf 100644
--- a/src/server/api/endpoints/antennas/notes.ts
+++ b/src/server/api/endpoints/antennas/notes.ts
@@ -8,6 +8,11 @@ import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { ApiError } from '../../error';
export const meta = {
+ desc: {
+ 'ja-JP': '指定したアンテナのノート一覧を表示します。',
+ 'en-US': 'Displays a list of notes for the specified antenna.'
+ },
+
tags: ['antennas', 'account', 'notes'],
requireCredential: true as const,
@@ -39,6 +44,16 @@ export const meta = {
code: 'NO_SUCH_ANTENNA',
id: '850926e0-fd3b-49b6-b69a-b28a5dbd82fe'
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Note'
+ }
}
};
diff --git a/src/server/api/endpoints/antennas/show.ts b/src/server/api/endpoints/antennas/show.ts
index bc2093ba61..ed400f830c 100644
--- a/src/server/api/endpoints/antennas/show.ts
+++ b/src/server/api/endpoints/antennas/show.ts
@@ -5,6 +5,11 @@ import { ApiError } from '../../error';
import { Antennas } from '../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': '指定したアンテナの情報を取得します。',
+ 'en-US': 'Acquires the information of the specified antenna.'
+ },
+
tags: ['antennas', 'account'],
requireCredential: true as const,
@@ -23,6 +28,12 @@ export const meta = {
code: 'NO_SUCH_ANTENNA',
id: 'c06569fb-b025-4f23-b22d-1fcd20d2816b'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Antenna'
}
};
diff --git a/src/server/api/endpoints/antennas/update.ts b/src/server/api/endpoints/antennas/update.ts
index b329e86ade..58f4e68c89 100644
--- a/src/server/api/endpoints/antennas/update.ts
+++ b/src/server/api/endpoints/antennas/update.ts
@@ -5,6 +5,11 @@ import { ApiError } from '../../error';
import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': 'アンテナの情報を更新します。',
+ 'en-US': 'Updates the information of the specified antenna.'
+ },
+
tags: ['antennas'],
requireCredential: true as const,
@@ -79,6 +84,12 @@ export const meta = {
code: 'NO_SUCH_USER_GROUP',
id: '109ed789-b6eb-456e-b8a9-6059d567d385'
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Antenna'
}
};
diff --git a/src/server/api/endpoints/ap/show.ts b/src/server/api/endpoints/ap/show.ts
index 214116c8c3..e8297db472 100644
--- a/src/server/api/endpoints/ap/show.ts
+++ b/src/server/api/endpoints/ap/show.ts
@@ -16,7 +16,8 @@ export const meta = {
tags: ['federation'],
desc: {
- 'ja-JP': 'URIを指定してActivityPubオブジェクトを参照します。'
+ 'ja-JP': 'URIを指定してActivityPubオブジェクトを参照します。',
+ 'en-US': 'Browse to the ActivityPub object by specifying the URI.'
},
requireCredential: false as const,
@@ -36,6 +37,22 @@ export const meta = {
code: 'NO_SUCH_OBJECT',
id: 'dc94d745-1262-4e63-a17d-fecaa57efc82'
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ type: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ enum: ['User', 'Note']
+ },
+ object: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/app/show.ts b/src/server/api/endpoints/app/show.ts
index ca4f3549f5..254ae30884 100644
--- a/src/server/api/endpoints/app/show.ts
+++ b/src/server/api/endpoints/app/show.ts
@@ -25,6 +25,12 @@ export const meta = {
code: 'NO_SUCH_APP',
id: 'dce83913-2dc6-4093-8a7b-71dbb11718a3'
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'App'
}
};
diff --git a/src/server/api/endpoints/auth/session/show.ts b/src/server/api/endpoints/auth/session/show.ts
index fe92ff3624..9e0d6d90a4 100644
--- a/src/server/api/endpoints/auth/session/show.ts
+++ b/src/server/api/endpoints/auth/session/show.ts
@@ -24,6 +24,27 @@ export const meta = {
code: 'NO_SUCH_SESSION',
id: 'bd72c97d-eba7-4adb-a467-f171b8847250'
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ app: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'App'
+ },
+ token: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/blocking/create.ts b/src/server/api/endpoints/blocking/create.ts
index bdaccc79ed..dfab338a8b 100644
--- a/src/server/api/endpoints/blocking/create.ts
+++ b/src/server/api/endpoints/blocking/create.ts
@@ -52,6 +52,12 @@ export const meta = {
code: 'ALREADY_BLOCKING',
id: '787fed64-acb9-464a-82eb-afbd745b9614'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
}
};
diff --git a/src/server/api/endpoints/blocking/delete.ts b/src/server/api/endpoints/blocking/delete.ts
index 451da1c915..22d2df5970 100644
--- a/src/server/api/endpoints/blocking/delete.ts
+++ b/src/server/api/endpoints/blocking/delete.ts
@@ -52,6 +52,76 @@ export const meta = {
code: 'NOT_BLOCKING',
id: '291b2efa-60c6-45c0-9f6a-045c8f9b02cd'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id',
+ description: 'The unique identifier for this blocking.',
+ example: 'xxxxxxxxxx',
+ },
+ name: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ username: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ host: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ avatarUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'url'
+ },
+ avatarBlurhash: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ avatarColor: {
+ type: 'any' as const,
+ optional: false as const, nullable: true as const
+ },
+ emojis: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ nullable: false as const, optional: false as const,
+ properties: {
+ name: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ },
+ host: {
+ type: 'string' as const,
+ nullable: true as const, optional: false as const
+ },
+ url: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const,
+ format: 'url'
+ },
+ aliases: {
+ type: 'array' as const,
+ nullable: false as const, optional: false as const,
+ items: {
+ type: 'string' as const,
+ nullable: false as const, optional: false as const
+ }
+ }
+ }
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/clips/create.ts b/src/server/api/endpoints/clips/create.ts
index 0d122dbb9b..b26c42c56c 100644
--- a/src/server/api/endpoints/clips/create.ts
+++ b/src/server/api/endpoints/clips/create.ts
@@ -23,6 +23,12 @@ export const meta = {
validator: $.optional.nullable.str.range(1, 2048)
}
},
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Clip'
+ }
};
export default define(meta, async (ps, user) => {
diff --git a/src/server/api/endpoints/clips/list.ts b/src/server/api/endpoints/clips/list.ts
index 6ede8ea0fc..6b90b114df 100644
--- a/src/server/api/endpoints/clips/list.ts
+++ b/src/server/api/endpoints/clips/list.ts
@@ -7,6 +7,16 @@ export const meta = {
requireCredential: true as const,
kind: 'read:account',
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Clip'
+ }
+ }
};
export default define(meta, async (ps, me) => {
diff --git a/src/server/api/endpoints/clips/notes.ts b/src/server/api/endpoints/clips/notes.ts
index 13983d99f7..6a507e2036 100644
--- a/src/server/api/endpoints/clips/notes.ts
+++ b/src/server/api/endpoints/clips/notes.ts
@@ -39,6 +39,16 @@ export const meta = {
code: 'NO_SUCH_CLIP',
id: '1d7645e6-2b6d-4635-b0fe-fe22b0e72e00'
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Note'
+ }
}
};
diff --git a/src/server/api/endpoints/clips/show.ts b/src/server/api/endpoints/clips/show.ts
index dc730d64a3..8c285d88b5 100644
--- a/src/server/api/endpoints/clips/show.ts
+++ b/src/server/api/endpoints/clips/show.ts
@@ -23,6 +23,12 @@ export const meta = {
code: 'NO_SUCH_CLIP',
id: 'c3c5fe33-d62c-44d2-9ea5-d997703f5c20'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Clip'
}
};
diff --git a/src/server/api/endpoints/clips/update.ts b/src/server/api/endpoints/clips/update.ts
index 4a1a31eb95..041691da2a 100644
--- a/src/server/api/endpoints/clips/update.ts
+++ b/src/server/api/endpoints/clips/update.ts
@@ -35,6 +35,12 @@ export const meta = {
code: 'NO_SUCH_CLIP',
id: 'b4d92d70-b216-46fa-9a3f-a8c811699257'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Clip'
}
};
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index f57166a2f6..7e43765c06 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -70,6 +70,12 @@ export const meta = {
code: 'NO_SUCH_FOLDER',
id: 'ea8fb7a5-af77-4a08-b608-c0218176cd73'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'DriveFile'
}
};
diff --git a/src/server/api/endpoints/drive/folders/create.ts b/src/server/api/endpoints/drive/folders/create.ts
index d88bfcc3d4..edaa74532d 100644
--- a/src/server/api/endpoints/drive/folders/create.ts
+++ b/src/server/api/endpoints/drive/folders/create.ts
@@ -43,6 +43,12 @@ export const meta = {
code: 'NO_SUCH_FOLDER',
id: '53326628-a00d-40a6-a3cd-8975105c0f95'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'DriveFolder'
}
};
diff --git a/src/server/api/endpoints/drive/folders/update.ts b/src/server/api/endpoints/drive/folders/update.ts
index e23a824d16..c2a272c247 100644
--- a/src/server/api/endpoints/drive/folders/update.ts
+++ b/src/server/api/endpoints/drive/folders/update.ts
@@ -61,6 +61,12 @@ export const meta = {
code: 'NO_SUCH_PARENT_FOLDER',
id: 'ce104e3a-faaf-49d5-b459-10ff0cbbcaa1'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'DriveFolder'
}
};
diff --git a/src/server/api/endpoints/endpoints.ts b/src/server/api/endpoints/endpoints.ts
index 3ab14389a9..84ab107c6a 100644
--- a/src/server/api/endpoints/endpoints.ts
+++ b/src/server/api/endpoints/endpoints.ts
@@ -2,12 +2,32 @@ import define from '../define';
import endpoints from '../endpoints';
export const meta = {
+ desc: {
+ 'ja-JP': '使用できるAPI一覧を返します。',
+ 'en-US': 'Returns a list of available APIs.'
+ },
+
requireCredential: false as const,
tags: ['meta'],
params: {
},
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ example: [
+ 'admin/abuse-user-reports',
+ 'admin/accounts/create',
+ 'admin/announcements/create',
+ '...'
+ ]
+ }
};
export default define(meta, async () => {
diff --git a/src/server/api/endpoints/federation/instances.ts b/src/server/api/endpoints/federation/instances.ts
index 6b6fe42a40..239756af53 100644
--- a/src/server/api/endpoints/federation/instances.ts
+++ b/src/server/api/endpoints/federation/instances.ts
@@ -1,4 +1,5 @@
import $ from 'cafy';
+import config from '../../../../config';
import define from '../../define';
import { Instances } from '../../../../models';
import { fetchMeta } from '../../../../misc/fetch-meta';
@@ -50,6 +51,16 @@ export const meta = {
sort: {
validator: $.optional.str,
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'FederationInstance'
+ }
}
};
diff --git a/src/server/api/endpoints/federation/show-instance.ts b/src/server/api/endpoints/federation/show-instance.ts
index 8c3b469972..1a0bcdb23e 100644
--- a/src/server/api/endpoints/federation/show-instance.ts
+++ b/src/server/api/endpoints/federation/show-instance.ts
@@ -2,6 +2,7 @@ import $ from 'cafy';
import define from '../../define';
import { Instances } from '../../../../models';
import { toPuny } from '../../../../misc/convert-host';
+import config from '../../../../config';
export const meta = {
tags: ['federation'],
@@ -12,6 +13,12 @@ export const meta = {
host: {
validator: $.str
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'FederationInstance'
}
};
diff --git a/src/server/api/endpoints/following/create.ts b/src/server/api/endpoints/following/create.ts
index d5ade3073a..ca46d59c78 100644
--- a/src/server/api/endpoints/following/create.ts
+++ b/src/server/api/endpoints/following/create.ts
@@ -64,6 +64,12 @@ export const meta = {
code: 'BLOCKED',
id: 'c4ab57cc-4e41-45e9-bfd9-584f61e35ce0'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
}
};
diff --git a/src/server/api/endpoints/following/delete.ts b/src/server/api/endpoints/following/delete.ts
index 692ac92144..d3abda9265 100644
--- a/src/server/api/endpoints/following/delete.ts
+++ b/src/server/api/endpoints/following/delete.ts
@@ -52,6 +52,12 @@ export const meta = {
code: 'NOT_FOLLOWING',
id: '5dbf82f5-c92b-40b1-87d1-6c8c0741fd09'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
}
};
diff --git a/src/server/api/endpoints/following/requests/cancel.ts b/src/server/api/endpoints/following/requests/cancel.ts
index a12e1f76b6..ef21ee4f27 100644
--- a/src/server/api/endpoints/following/requests/cancel.ts
+++ b/src/server/api/endpoints/following/requests/cancel.ts
@@ -40,6 +40,12 @@ export const meta = {
code: 'FOLLOW_REQUEST_NOT_FOUND',
id: '089b125b-d338-482a-9a09-e2622ac9f8d4'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
}
};
diff --git a/src/server/api/endpoints/following/requests/list.ts b/src/server/api/endpoints/following/requests/list.ts
index 78f937bb0b..4afd448516 100644
--- a/src/server/api/endpoints/following/requests/list.ts
+++ b/src/server/api/endpoints/following/requests/list.ts
@@ -11,7 +11,33 @@ export const meta = {
requireCredential: true as const,
- kind: 'read:following'
+ kind: 'read:following',
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ follower: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ },
+ followee: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ }
+ }
+ }
+ }
};
export default define(meta, async (ps, user) => {
diff --git a/src/server/api/endpoints/games/reversi/games.ts b/src/server/api/endpoints/games/reversi/games.ts
index 7267157e0e..fa8bf20353 100644
--- a/src/server/api/endpoints/games/reversi/games.ts
+++ b/src/server/api/endpoints/games/reversi/games.ts
@@ -26,6 +26,113 @@ export const meta = {
validator: $.optional.bool,
default: false
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time'
+ },
+ startedAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time'
+ },
+ isStarted: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isEnded: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ form1: {
+ type: 'any' as const,
+ optional: false as const, nullable: true as const
+ },
+ form2: {
+ type: 'any' as const,
+ optional: false as const, nullable: true as const
+ },
+ user1Accepted: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ default: false
+ },
+ user2Accepted: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ default: false
+ },
+ user1Id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ user2Id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ user1: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ },
+ user2: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ },
+ winnerId: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id'
+ },
+ winner: {
+ type: 'object' as const,
+ optional: false as const, nullable: true as const,
+ ref: 'User'
+ },
+ surrendered: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id'
+ },
+ black: {
+ type: 'number' as const,
+ optional: false as const, nullable: true as const
+ },
+ bw: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ isLlotheo: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ },
+ canPutEverywhere: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ loopedBoard: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/games/reversi/games/show.ts b/src/server/api/endpoints/games/reversi/games/show.ts
index ea2776b16f..75599885c9 100644
--- a/src/server/api/endpoints/games/reversi/games/show.ts
+++ b/src/server/api/endpoints/games/reversi/games/show.ts
@@ -20,6 +20,125 @@ export const meta = {
code: 'NO_SUCH_GAME',
id: 'f13a03db-fae1-46c9-87f3-43c8165419e1'
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time'
+ },
+ startedAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time'
+ },
+ isStarted: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isEnded: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ form1: {
+ type: 'any' as const,
+ optional: false as const, nullable: true as const
+ },
+ form2: {
+ type: 'any' as const,
+ optional: false as const, nullable: true as const
+ },
+ user1Accepted: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ default: false
+ },
+ user2Accepted: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ default: false
+ },
+ user1Id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ user2Id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ user1: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ },
+ user2: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ },
+ winnerId: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id'
+ },
+ winner: {
+ type: 'object' as const,
+ optional: false as const, nullable: true as const,
+ ref: 'User'
+ },
+ surrendered: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
+ format: 'id'
+ },
+ black: {
+ type: 'number' as const,
+ optional: false as const, nullable: true as const
+ },
+ bw: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ isLlotheo: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ },
+ canPutEverywhere: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ loopedBoard: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ board: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'any' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ turn: {
+ type: 'any' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/games/reversi/invitations.ts b/src/server/api/endpoints/games/reversi/invitations.ts
index 93ea1bd58e..6a73bdf0c4 100644
--- a/src/server/api/endpoints/games/reversi/invitations.ts
+++ b/src/server/api/endpoints/games/reversi/invitations.ts
@@ -4,7 +4,48 @@ import { ReversiMatchings } from '../../../../../models';
export const meta = {
tags: ['games'],
- requireCredential: true as const
+ requireCredential: true as const,
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ createdAt: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'date-time'
+ },
+ parentId: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ parent: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ },
+ childId: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ child: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
+ }
+ }
+ }
+ }
};
export default define(meta, async (ps, user) => {
diff --git a/src/server/api/endpoints/i/get-word-muted-notes-count.ts b/src/server/api/endpoints/i/get-word-muted-notes-count.ts
index e88d697bfd..a69ebc286a 100644
--- a/src/server/api/endpoints/i/get-word-muted-notes-count.ts
+++ b/src/server/api/endpoints/i/get-word-muted-notes-count.ts
@@ -9,6 +9,17 @@ export const meta = {
kind: 'read:account',
params: {
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ count: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/i/page-likes.ts b/src/server/api/endpoints/i/page-likes.ts
index 7f44df85db..9a83cc1d43 100644
--- a/src/server/api/endpoints/i/page-likes.ts
+++ b/src/server/api/endpoints/i/page-likes.ts
@@ -29,6 +29,23 @@ export const meta = {
untilId: {
validator: $.optional.type(ID),
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ page: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Page'
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/i/pages.ts b/src/server/api/endpoints/i/pages.ts
index f55f228d80..3fc00e370a 100644
--- a/src/server/api/endpoints/i/pages.ts
+++ b/src/server/api/endpoints/i/pages.ts
@@ -29,6 +29,16 @@ export const meta = {
untilId: {
validator: $.optional.type(ID),
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Page'
+ }
}
};
diff --git a/src/server/api/endpoints/i/pin.ts b/src/server/api/endpoints/i/pin.ts
index 59b2f23e3d..e13873f601 100644
--- a/src/server/api/endpoints/i/pin.ts
+++ b/src/server/api/endpoints/i/pin.ts
@@ -44,6 +44,12 @@ export const meta = {
code: 'ALREADY_PINNED',
id: '8b18c2b7-68fe-4edb-9892-c0cbaeb6c913'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
}
};
diff --git a/src/server/api/endpoints/i/read-announcement.ts b/src/server/api/endpoints/i/read-announcement.ts
index 070e49eed0..4a4a021af9 100644
--- a/src/server/api/endpoints/i/read-announcement.ts
+++ b/src/server/api/endpoints/i/read-announcement.ts
@@ -7,6 +7,11 @@ import { AnnouncementReads, Announcements, Users } from '../../../../models';
import { publishMainStream } from '../../../../services/stream';
export const meta = {
+ desc: {
+ 'ja-JP': '指定したアナウンスを既読にします。',
+ 'en-US': 'Marks the specified announcement as read.'
+ },
+
tags: ['account'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/unpin.ts b/src/server/api/endpoints/i/unpin.ts
index e1ea3a6295..6f06e38598 100644
--- a/src/server/api/endpoints/i/unpin.ts
+++ b/src/server/api/endpoints/i/unpin.ts
@@ -32,6 +32,12 @@ export const meta = {
code: 'NO_SUCH_NOTE',
id: '454170ce-9d63-4a43-9da1-ea10afe81e21'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
}
};
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 3d7f1fa76f..a1faf8f1c2 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -196,6 +196,12 @@ export const meta = {
code: 'NO_SUCH_PAGE',
id: '8e01b590-7eb9-431b-a239-860e086c408e'
},
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'User'
}
};
diff --git a/src/server/api/endpoints/i/user-group-invites.ts b/src/server/api/endpoints/i/user-group-invites.ts
index 9885082a49..4c5105fa7b 100644
--- a/src/server/api/endpoints/i/user-group-invites.ts
+++ b/src/server/api/endpoints/i/user-group-invites.ts
@@ -29,6 +29,27 @@ export const meta = {
untilId: {
validator: $.optional.type(ID),
},
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ group: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'UserGroup'
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index 3b647e21cd..c2f4190e1c 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -26,6 +26,14 @@ export const meta = {
type: 'object' as const,
optional: false as const, nullable: false as const,
properties: {
+ maintainerName: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ maintainerEmail: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
version: {
type: 'string' as const,
optional: false as const, nullable: false as const,
@@ -37,47 +45,383 @@ export const meta = {
optional: false as const, nullable: false as const,
description: 'The name of this instance.',
},
- description: {
+ uri: {
type: 'string' as const,
optional: false as const, nullable: false as const,
+ format: 'url',
+ example: 'https://misskey.example.com'
+ },
+ description: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const,
description: 'The description of this instance.',
},
- announcements: {
+ langs: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ tosUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ repositoryUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ default: 'https://github.com/syuilo/misskey'
+ },
+ feedbackUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ default: 'https://github.com/syuilo/misskey/issues/new'
+ },
+ secure: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ default: false
+ },
+ disableRegistration: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Whether disabled open registration.',
+ },
+ disableLocalTimeline: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Whether disabled LTL and STL.',
+ },
+ disableGlobalTimeline: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Whether disabled GTL.',
+ },
+ driveCapacityPerLocalUserMb: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ driveCapacityPerRemoteUserMb: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ cacheRemoteFiles: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ proxyRemoteFiles: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ enableHcaptcha: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ hcaptchaSiteKey: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ enableRecaptcha: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ recaptchaSiteKey: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ swPublickey: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ mascotImageUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ default: '/assets/ai.png'
+ },
+ bannerUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ errorImageUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ default: 'https://xn--931a.moe/aiart/yubitun.png'
+ },
+ iconUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ maxNoteTextLength: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const,
+ default: 500
+ },
+ emojis: {
type: 'array' as const,
optional: false as const, nullable: false as const,
items: {
type: 'object' as const,
optional: false as const, nullable: false as const,
properties: {
- title: {
+ id: {
type: 'string' as const,
optional: false as const, nullable: false as const,
- description: 'The title of the announcement.',
+ format: 'id'
},
- text: {
- type: 'string' as const,
+ aliases: {
+ type: 'array' as const,
optional: false as const, nullable: false as const,
- description: 'The text of the announcement. (can be HTML)',
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
},
+ category: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ host: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ url: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'url'
+ }
}
- },
- description: 'The announcements of this instance.',
+ }
},
- disableRegistration: {
+ requireSetup: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
- description: 'Whether disabled open registration.',
+ example: false
},
- disableLocalTimeline: {
+ enableEmail: {
type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- description: 'Whether disabled LTL and STL.',
+ optional: false as const, nullable: false as const
},
- disableGlobalTimeline: {
+ enableTwitterIntegration: {
type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- description: 'Whether disabled GTL.',
+ optional: false as const, nullable: false as const
+ },
+ enableGithubIntegration: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ enableDiscordIntegration: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ enableServiceWorker: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ proxyAccountName: {
+ type: 'string' as const,
+ optional: false as const, nullable: true as const
+ },
+ features: {
+ type: 'object' as const,
+ optional: true as const, nullable: false as const,
+ properties: {
+ registration: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ localTimeLine: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ globalTimeLine: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ elasticsearch: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ hcaptcha: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ recaptcha: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ objectStorage: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ twitter: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ github: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ discord: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ serviceWorker: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ miauth: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const,
+ default: true
+ },
+ }
+ },
+ userStarForReactionFallback: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const,
+ },
+ pinnedUsers: {
+ type: 'array' as const,
+ optional: true as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ hiddenTags: {
+ type: 'array' as const,
+ optional: true as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ blockedHosts: {
+ type: 'array' as const,
+ optional: true as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ hcaptchaSecretKey: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ recaptchaSecretKey: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ proxyAccountId: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const,
+ format: 'id'
+ },
+ twitterConsumerKey: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ twitterConsumerSecret: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ githubClientId: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ githubClientSecret: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ discordClientId: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ discordClientSecret: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ summaryProxy: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ email: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ smtpSecure: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ smtpHost: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ smtpPort: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ smtpUser: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ smtpPass: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
},
+ swPrivateKey: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ useObjectStorage: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ objectStorageBaseUrl: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ objectStorageBucket: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ objectStoragePrefix: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ objectStorageEndpoint: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ objectStorageRegion: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ objectStoragePort: {
+ type: 'number' as const,
+ optional: true as const, nullable: true as const
+ },
+ objectStorageAccessKey: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ objectStorageSecretKey: {
+ type: 'string' as const,
+ optional: true as const, nullable: true as const
+ },
+ objectStorageUseSSL: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ objectStorageUseProxy: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ },
+ objectStorageSetPublicRead: {
+ type: 'boolean' as const,
+ optional: true as const, nullable: false as const
+ }
}
}
};
diff --git a/src/server/api/endpoints/miauth/gen-token.ts b/src/server/api/endpoints/miauth/gen-token.ts
index a5fa194008..0634debb1e 100644
--- a/src/server/api/endpoints/miauth/gen-token.ts
+++ b/src/server/api/endpoints/miauth/gen-token.ts
@@ -32,6 +32,17 @@ export const meta = {
validator: $.arr($.str).unique(),
},
},
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ token: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
};
export default define(meta, async (ps, user) => {
diff --git a/src/server/api/endpoints/my/apps.ts b/src/server/api/endpoints/my/apps.ts
index 348cbfc9f8..2ca882fd6d 100644
--- a/src/server/api/endpoints/my/apps.ts
+++ b/src/server/api/endpoints/my/apps.ts
@@ -22,6 +22,55 @@ export const meta = {
validator: $.optional.num.min(0),
default: 0
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ name: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ callbackUrl: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ permission: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ },
+ secret: {
+ type: 'string' as const,
+ optional: true as const, nullable: false as const
+ },
+ isAuthorized: {
+ type: 'object' as const,
+ optional: true as const, nullable: false as const,
+ properties: {
+ appId: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ userId: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/notes/polls/recommendation.ts b/src/server/api/endpoints/notes/polls/recommendation.ts
index a915c95a3f..93c9ff08ca 100644
--- a/src/server/api/endpoints/notes/polls/recommendation.ts
+++ b/src/server/api/endpoints/notes/polls/recommendation.ts
@@ -23,6 +23,16 @@ export const meta = {
validator: $.optional.num.min(0),
default: 0
}
+ },
+
+ res: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'Note'
+ }
}
};
diff --git a/src/server/api/endpoints/notes/state.ts b/src/server/api/endpoints/notes/state.ts
index b41b56162c..b8b17820ee 100644
--- a/src/server/api/endpoints/notes/state.ts
+++ b/src/server/api/endpoints/notes/state.ts
@@ -21,6 +21,21 @@ export const meta = {
'en-US': 'Target note ID.'
}
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ isFavorited: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isWatching: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/notifications/create.ts b/src/server/api/endpoints/notifications/create.ts
index 6267699e90..e447a32e0b 100644
--- a/src/server/api/endpoints/notifications/create.ts
+++ b/src/server/api/endpoints/notifications/create.ts
@@ -3,6 +3,10 @@ import define from '../../define';
import { createNotification } from '../../../../services/create-notification';
export const meta = {
+ desc: {
+ 'ja-JP': '通知を作成します。'
+ },
+
tags: ['notifications'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/promo/read.ts b/src/server/api/endpoints/promo/read.ts
index 9ce253374b..57eb0681e5 100644
--- a/src/server/api/endpoints/promo/read.ts
+++ b/src/server/api/endpoints/promo/read.ts
@@ -7,6 +7,11 @@ import { PromoReads } from '../../../../models';
import { genId } from '../../../../misc/gen-id';
export const meta = {
+ desc: {
+ 'ja-JP': '指定したノートのプロモーションを既読にします。',
+ 'en-US': 'Marks the promotion for the specified note as read.'
+ },
+
tags: ['notes'],
requireCredential: true as const,
diff --git a/src/server/api/endpoints/room/show.ts b/src/server/api/endpoints/room/show.ts
index e8af68956d..a12d9b8f26 100644
--- a/src/server/api/endpoints/room/show.ts
+++ b/src/server/api/endpoints/room/show.ts
@@ -7,7 +7,7 @@ import { toPunyNullable } from '../../../../misc/convert-host';
export const meta = {
desc: {
- 'ja-JP': '指定した部屋の情報を取得します。',
+ 'ja-JP': '指定したユーザーの部屋の情報を取得します。',
},
tags: ['room'],
@@ -38,6 +38,83 @@ export const meta = {
code: 'NO_SUCH_USER',
id: '7ad3fa3e-5e12-42f0-b23a-f3d13f10ee4b'
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ roomType: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ enum: ['default', 'washitsu']
+ },
+ furnitures: {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ type: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ },
+ props: {
+ type: 'object' as const,
+ optional: true as const, nullable: false as const,
+ description: 'Properties vary depending on the furniture'
+ },
+ position: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ x: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ y: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ z: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ },
+ rotation: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ x: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ y: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ z: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
+ }
+ }
+ },
+ carpetColor: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'hex',
+ example: '#85CAF0'
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/room/update.ts b/src/server/api/endpoints/room/update.ts
index 3022b96b1d..af8b80be9a 100644
--- a/src/server/api/endpoints/room/update.ts
+++ b/src/server/api/endpoints/room/update.ts
@@ -46,5 +46,6 @@ export default define(meta, async (ps, user) => {
// Publish meUpdated event
publishMainStream(user.id, 'meUpdated', iObj);
+ // TODO: レスポンスがおかしいと思う by YuzuRyo61
return iObj;
});
diff --git a/src/server/api/endpoints/stats.ts b/src/server/api/endpoints/stats.ts
index 955a791948..33d6af515b 100644
--- a/src/server/api/endpoints/stats.ts
+++ b/src/server/api/endpoints/stats.ts
@@ -6,6 +6,7 @@ export const meta = {
requireCredential: false as const,
desc: {
+ 'ja-JP': 'インスタンスの統計を取得します。',
'en-US': 'Get the instance\'s statistics'
},
@@ -43,6 +44,14 @@ export const meta = {
optional: false as const, nullable: false as const,
description: 'The count of federated instances.',
},
+ driveUsageLocal: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ },
+ driveUsageRemote: {
+ type: 'number' as const,
+ optional: false as const, nullable: false as const
+ }
}
}
};
diff --git a/src/server/api/endpoints/sw/register.ts b/src/server/api/endpoints/sw/register.ts
index 4253c9557e..ceb70a9274 100644
--- a/src/server/api/endpoints/sw/register.ts
+++ b/src/server/api/endpoints/sw/register.ts
@@ -21,6 +21,22 @@ export const meta = {
publickey: {
validator: $.str
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ state: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ enum: ['already-subscribed', 'subscribed']
+ },
+ key: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/username/available.ts b/src/server/api/endpoints/username/available.ts
index 89f14d3dc2..6a5146e432 100644
--- a/src/server/api/endpoints/username/available.ts
+++ b/src/server/api/endpoints/username/available.ts
@@ -3,6 +3,11 @@ import define from '../../define';
import { Users, UsedUsernames } from '../../../../models';
export const meta = {
+ desc: {
+ 'ja-JP': 'ユーザーネームが使用されていないかをチェックします。',
+ 'en-US': 'Check if the username is being used.'
+ },
+
tags: ['users'],
requireCredential: false as const,
@@ -11,6 +16,18 @@ export const meta = {
username: {
validator: $.use(Users.validateLocalUsername)
}
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ available: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const,
+ description: 'Returns true if the username is not used.'
+ }
+ }
}
};
diff --git a/src/server/api/endpoints/users.ts b/src/server/api/endpoints/users.ts
index 1c16472578..354d7dc70b 100644
--- a/src/server/api/endpoints/users.ts
+++ b/src/server/api/endpoints/users.ts
@@ -4,6 +4,11 @@ import { Users } from '../../../models';
import { generateMutedUserQueryForUsers } from '../common/generate-muted-user-query';
export const meta = {
+ desc: {
+ 'ja-JP': 'ユーザー一覧を表示します。',
+ 'en-US': 'Display the user list.'
+ },
+
tags: ['users'],
requireCredential: false as const,
@@ -69,7 +74,7 @@ export default define(meta, async (ps, me) => {
switch (ps.state) {
case 'admin': query.andWhere('user.isAdmin = TRUE'); break;
case 'moderator': query.andWhere('user.isModerator = TRUE'); break;
- case 'adminOrModerator': query.andWhere('user.isAdmin = TRUE OR isModerator = TRUE'); break;
+ case 'adminOrModerator': query.andWhere('user.isAdmin = TRUE OR user.isModerator = TRUE'); break;
case 'alive': query.andWhere('user.updatedAt > :date', { date: new Date(Date.now() - 1000 * 60 * 60 * 24 * 5) }); break;
}
diff --git a/src/server/api/endpoints/users/lists/update.ts b/src/server/api/endpoints/users/lists/update.ts
index 600d834f9e..3ced871ae8 100644
--- a/src/server/api/endpoints/users/lists/update.ts
+++ b/src/server/api/endpoints/users/lists/update.ts
@@ -34,6 +34,12 @@ export const meta = {
}
},
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ ref: 'UserList',
+ },
+
errors: {
noSuchList: {
message: 'No such list.',
diff --git a/src/server/api/endpoints/users/relation.ts b/src/server/api/endpoints/users/relation.ts
index 086e9bd1ea..1beb925398 100644
--- a/src/server/api/endpoints/users/relation.ts
+++ b/src/server/api/endpoints/users/relation.ts
@@ -19,6 +19,93 @@ export const meta = {
'ja-JP': 'ユーザーID (配列でも可)'
}
}
+ },
+
+ res: {
+ oneOf: [
+ {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ isFollowing: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ hasPendingFollowRequestFromYou: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ hasPendingFollowRequestToYou: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isFollowed: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isBlocking: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isBlocked: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isMuted: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ },
+ {
+ type: 'array' as const,
+ optional: false as const, nullable: false as const,
+ items: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ properties: {
+ id: {
+ type: 'string' as const,
+ optional: false as const, nullable: false as const,
+ format: 'id'
+ },
+ isFollowing: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ hasPendingFollowRequestFromYou: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ hasPendingFollowRequestToYou: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isFollowed: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isBlocking: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isBlocked: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
+ isMuted: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ }
+ }
+ }
+ }
+ ]
}
};
diff --git a/src/server/api/openapi/gen-spec.ts b/src/server/api/openapi/gen-spec.ts
index 78e4810376..5185696675 100644
--- a/src/server/api/openapi/gen-spec.ts
+++ b/src/server/api/openapi/gen-spec.ts
@@ -13,7 +13,7 @@ export function genOpenapiSpec(lang = 'ja-JP') {
version: 'v1',
title: 'Misskey API',
description: getDescription(lang),
- 'x-logo': { url: '/assets/api-doc.png' }
+ 'x-logo': { url: '/static-assets/api-doc.png' }
},
externalDocs: {
@@ -180,7 +180,7 @@ export function genOpenapiSpec(lang = 'ja-JP') {
}
},
'403': {
- description: 'Forbiddon error',
+ description: 'Forbidden error',
content: {
'application/json': {
schema: {
diff --git a/src/server/api/openapi/schemas.ts b/src/server/api/openapi/schemas.ts
index b96d1f457f..99107c986e 100644
--- a/src/server/api/openapi/schemas.ts
+++ b/src/server/api/openapi/schemas.ts
@@ -16,6 +16,10 @@ import { packedPageSchema } from '../../../models/repositories/page';
import { packedUserGroupSchema } from '../../../models/repositories/user-group';
import { packedNoteFavoriteSchema } from '../../../models/repositories/note-favorite';
import { packedChannelSchema } from '../../../models/repositories/channel';
+import { packedAntennaSchema } from '../../../models/repositories/antenna';
+import { packedClipSchema } from '../../../models/repositories/clip';
+import { packedFederationInstanceSchema } from '../../../models/repositories/federation-instance';
+import { packedQueueCountSchema } from '../../../models/repositories/queue';
export function convertSchemaToOpenApiSchema(schema: Schema) {
const res: any = schema;
@@ -84,4 +88,8 @@ export const schemas = {
Hashtag: convertSchemaToOpenApiSchema(packedHashtagSchema),
Page: convertSchemaToOpenApiSchema(packedPageSchema),
Channel: convertSchemaToOpenApiSchema(packedChannelSchema),
+ QueueCount: convertSchemaToOpenApiSchema(packedQueueCountSchema),
+ Antenna: convertSchemaToOpenApiSchema(packedAntennaSchema),
+ Clip: convertSchemaToOpenApiSchema(packedClipSchema),
+ FederationInstance: convertSchemaToOpenApiSchema(packedFederationInstanceSchema),
};
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index a1d79100a6..27fa495f8d 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -28,7 +28,8 @@ const markdown = MarkdownIt({
html: true
});
-const client = `${__dirname}/../../client/`;
+const staticAssets = `${__dirname}/../../../assets/`;
+const assets = `${__dirname}/../../assets/`;
// Init app
const app = new Koa();
@@ -57,24 +58,31 @@ const router = new Router();
//#region static assets
+router.get('/static-assets/(.*)', async ctx => {
+ await send(ctx as any, ctx.path.replace('/static-assets/', ''), {
+ root: staticAssets,
+ maxage: ms('7 days'),
+ });
+});
+
router.get('/assets/(.*)', async ctx => {
- await send(ctx as any, ctx.path, {
- root: client,
+ await send(ctx as any, ctx.path.replace('/assets/', ''), {
+ root: assets,
maxage: ms('7 days'),
});
});
// Apple touch icon
router.get('/apple-touch-icon.png', async ctx => {
- await send(ctx as any, '/assets/apple-touch-icon.png', {
- root: client
+ await send(ctx as any, '/apple-touch-icon.png', {
+ root: assets
});
});
// ServiceWorker
router.get('/sw.js', async ctx => {
- await send(ctx as any, `/assets/sw.${config.version}.js`, {
- root: client
+ await send(ctx as any, `/sw.${config.version}.js`, {
+ root: assets
});
});
@@ -82,8 +90,8 @@ router.get('/sw.js', async ctx => {
router.get('/manifest.json', require('./manifest'));
router.get('/robots.txt', async ctx => {
- await send(ctx as any, '/assets/robots.txt', {
- root: client
+ await send(ctx as any, '/robots.txt', {
+ root: assets
});
});
@@ -91,8 +99,8 @@ router.get('/robots.txt', async ctx => {
// Docs
router.get('/api-doc', async ctx => {
- await send(ctx as any, '/assets/redoc.html', {
- root: client
+ await send(ctx as any, '/redoc.html', {
+ root: assets
});
});
diff --git a/src/server/web/manifest.ts b/src/server/web/manifest.ts
index 36c901d267..a1c937703b 100644
--- a/src/server/web/manifest.ts
+++ b/src/server/web/manifest.ts
@@ -1,5 +1,5 @@
import * as Koa from 'koa';
-import * as manifest from '../../client/assets/manifest.json';
+import * as manifest from '../../../src/client/assets/manifest.json';
import { fetchMeta } from '../../misc/fetch-meta';
module.exports = async (ctx: Koa.Context) => {
diff --git a/src/server/web/style.css b/src/server/web/style.css
index 6ab2c2154a..43fbe1ab06 100644
--- a/src/server/web/style.css
+++ b/src/server/web/style.css
@@ -3,17 +3,20 @@ html {
color: var(--fg);
}
-#ini {
+#splash {
position: fixed;
- z-index: 1;
+ z-index: 10000;
top: 0;
left: 0;
- width: 100%;
- height: 100%;
+ width: 100vw;
+ height: 100vh;
cursor: wait;
+ background-color: var(--bg);
+ opacity: 1;
+ transition: opacity 0.5s ease;
}
-#ini > svg {
+#splash > img {
position: absolute;
top: 0;
right: 0;
@@ -22,16 +25,5 @@ html {
margin: auto;
width: 64px;
height: 64px;
- animation: ini 0.6s infinite linear;
- color: var(--accent);
- fill: currentColor;
-}
-
-@keyframes ini {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
+ pointer-events: none;
}
diff --git a/src/server/web/views/base.pug b/src/server/web/views/base.pug
index 1b053438dc..9a5c674242 100644
--- a/src/server/web/views/base.pug
+++ b/src/server/web/views/base.pug
@@ -44,8 +44,6 @@ html
| JavaScriptを有効にしてください
br
| Please turn on your JavaScript
- div#ini.
- <svg viewBox="0 0 50 50">
- <path d="M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z" />
- </svg>
+ div#splash
+ img(src='/favicon.ico')
block content
diff --git a/src/server/web/views/info.pug b/src/server/web/views/info.pug
index eed69fc99e..323dce974f 100644
--- a/src/server/web/views/info.pug
+++ b/src/server/web/views/info.pug
@@ -66,7 +66,7 @@ html
main
header
h1 Misskey Version #{version}
- img(src='/assets/misskey-php-like-logo.png' alt='')
+ img(src='/static-assets/misskey-php-like-logo.png' alt='')
table
tr
th Instance
diff --git a/src/services/send-email.ts b/src/services/send-email.ts
index c716b36715..4814808392 100644
--- a/src/services/send-email.ts
+++ b/src/services/send-email.ts
@@ -8,7 +8,7 @@ export const logger = new Logger('email');
export async function sendEmail(to: string, subject: string, html: string, text: string) {
const meta = await fetchMeta(true);
- const iconUrl = `${config.url}/assets/mi-white.png`;
+ const iconUrl = `${config.url}/static-assets/mi-white.png`;
const emailSettingUrl = `${config.url}/settings/email`;
const enableAuth = meta.smtpUser != null && meta.smtpUser !== '';