diff --git a/locales/de-DE.yml b/locales/de-DE.yml
index e3edcf5f40fb155db8c46860644594fe8a5ebe9a..d08858a336c5b1eed93ad19d9d2715790fc27860 100644
--- a/locales/de-DE.yml
+++ b/locales/de-DE.yml
@@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer anderer Instanzen"
 inMb: "In Megabytes"
 iconUrl: "Icon-URL"
 bannerUrl: "Banner-URL"
+backgroundImageUrl: "Hintergrundbild-URL"
 basicInfo: "Basisdaten"
 pinnedUsers: "Angepinnte Benutzer"
 pinnedUsersDescription: "Gib einen Benutzernamen pro Zeile ein. Diese werden im \"Erkunden\" Tab angezeigt."
diff --git a/locales/en-US.yml b/locales/en-US.yml
index 3dd581c8a4169111928307cd1a0068f431d75286..d08f403b9e70cc3d231572b8d7e6774f857a5d12 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "Drive capacity per remote user"
 inMb: "In megabytes"
 iconUrl: "Icon URL"
 bannerUrl: "Banner image URL"
+backgroundImageUrl: "Background image URL"
 basicInfo: "Basic info"
 pinnedUsers: "Pinned user"
 pinnedUsersDescription: "List one username per line. Users listed here will be pinned under \"Explore\" tab."
diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml
index 174a3a8f5ab9d507c774597d45f84a792aca3bf1..161b4553ade54196037e9707842644a59e645ef1 100644
--- a/locales/fr-FR.yml
+++ b/locales/fr-FR.yml
@@ -279,6 +279,7 @@ emptyDrive: "Le Drive est vide"
 emptyFolder: "Le dossier est vide"
 unableToDelete: "Suppression impossible"
 inputNewFileName: "Entrez un nouveau nom de fichier"
+inputNewDescription: "Veuillez entrer une nouvelle description"
 inputNewFolderName: "Entrez un nouveau nom de dossier"
 circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
 hasChildFilesOrFolders: "Impossible de supprimer ce dossier car il n'est pas vide."
@@ -310,6 +311,8 @@ monthX: "{month}"
 yearX: "{year}"
 pages: "Pages"
 integration: "Intégrations"
+connectService: "Connexion"
+disconnectService: "Déconnexion"
 enableLocalTimeline: "Activer le fil local"
 enableGlobalTimeline: "Activer le fil global"
 disablingTimelinesInfo: "Même si vous désactivez ces fils, les administrateur·rice·s et les modérateur·rice·s pourront toujours y accéder."
@@ -544,6 +547,8 @@ disablePlayer: "Fermer le lecteur vidéo"
 expandTweet: "Étendre le tweet"
 themeEditor: "Éditeur de thèmes"
 description: "Description"
+describeFile: "Ajouter une description d'image"
+enterFileDescription: "Saisissez une description"
 author: "Auteur·rice"
 leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous les ignorer ?"
 manage: "Gestion"
diff --git a/locales/it-IT.yml b/locales/it-IT.yml
index 0fdf78c7993bd1b622e94e2f17b2f7d26f95065c..63b535a476678a44ca2cb67f2591e617e7455e8d 100644
--- a/locales/it-IT.yml
+++ b/locales/it-IT.yml
@@ -274,6 +274,7 @@ emptyDrive: "Il Drive è vuoto"
 emptyFolder: "La cartella è vuota"
 unableToDelete: "Eliminazione impossibile"
 inputNewFileName: "Inserisci nome del nuovo file"
+inputNewDescription: "Inserisci una nuova descrizione"
 inputNewFolderName: "Inserisci nome della nuova cartella"
 circularReferenceFolder: "La cartella di destinazione è una sottocartella della cartella che vuoi spostare."
 hasChildFilesOrFolders: "Impossibile eliminare la cartella perché non è vuota"
@@ -305,6 +306,8 @@ monthX: "{month}"
 yearX: "{year}"
 pages: "Pagine"
 integration: "App collegate"
+connectService: "Connessione"
+disconnectService: "Disconnessione "
 enableLocalTimeline: "Abilita Timeline locale"
 enableGlobalTimeline: "Abilita Timeline federata"
 disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori e i moderatori potranno sempre accederci."
@@ -531,6 +534,8 @@ disablePlayer: "Chiudi lettore video"
 expandTweet: "Espandi tweet"
 themeEditor: "Editor di temi"
 description: "Descrizione"
+describeFile: "Aggiungi una descrizione d'immagine"
+enterFileDescription: "Inserisci descrizione"
 author: "Autore"
 leaveConfirm: "Ci sono delle modifiche ancora non salvate. Vuoi cancellarle?"
 manage: "Gestione"
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index 13f7e331ad31abba57058d5776a5f7ee0349006d..9e500f6130e6ec9f47bb5e8a36dbbb2326f9f5a9 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのド
 inMb: "メガバイト単位"
 iconUrl: "アイコン画像のURL (faviconなど)"
 bannerUrl: "バナー画像のURL"
+backgroundImageUrl: "背景画像のURL"
 basicInfo: "基本情報"
 pinnedUsers: "ピン留めユーザー"
 pinnedUsersDescription: "「みつける」ページなどにピン留めしたいユーザーを改行で区切って記述します。"
diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml
index 3d313b8c7cff1c1cfb7f0d24e41120f5b5fd3473..f3fce251f6e98d05b2bd5b60b74d4bf44f1c4750 100644
--- a/locales/ko-KR.yml
+++ b/locales/ko-KR.yml
@@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "리모트 유저 한 명당 드라이브 용량"
 inMb: "메가바이트 단위"
 iconUrl: "아이콘 URL"
 bannerUrl: "배너 이미지 URL"
+backgroundImageUrl: "배경 이미지 URL"
 basicInfo: "기본 정보"
 pinnedUsers: "고정된 유저"
 pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다."
diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml
index 905c84575c8aee42badeb6f3ce077efa49c2e55c..f10a09a329df1556159fc120eb6e11eac63c98e9 100644
--- a/locales/zh-CN.yml
+++ b/locales/zh-CN.yml
@@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "每个远程用户的网盘容量"
 inMb: "以兆字节(MegaByte)为单位"
 iconUrl: "图标URL"
 bannerUrl: "Banner URL"
+backgroundImageUrl: "背景图URL"
 basicInfo: "基本信息"
 pinnedUsers: "置顶用户"
 pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。"
diff --git a/migration/1622679304522-user-profile-description-length.ts b/migration/1622679304522-user-profile-description-length.ts
new file mode 100644
index 0000000000000000000000000000000000000000..015d1e24b7627ba77cc6d1e2c54640e90a4c1b48
--- /dev/null
+++ b/migration/1622679304522-user-profile-description-length.ts
@@ -0,0 +1,13 @@
+import {MigrationInterface, QueryRunner} from "typeorm";
+
+export class userProfileDescriptionLength1622679304522 implements MigrationInterface {
+	name = 'userProfileDescriptionLength1622679304522';
+
+	public async up(queryRunner: QueryRunner): Promise<void> {
+		await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "description" TYPE character varying(2048)`, undefined);
+	}
+
+	public async down(queryRunner: QueryRunner): Promise<void> {
+		await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "description" TYPE character varying(1024)`, undefined);
+	}
+}
diff --git a/migration/1622681548499-log-message-length.ts b/migration/1622681548499-log-message-length.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ef8c33982b9287c9bc3c619f919318fff338c392
--- /dev/null
+++ b/migration/1622681548499-log-message-length.ts
@@ -0,0 +1,12 @@
+import {MigrationInterface, QueryRunner} from "typeorm";
+
+export class logMessageLength1622681548499 implements MigrationInterface {
+	name = 'logMessageLength1622681548499';
+	public async up(queryRunner: QueryRunner): Promise<void> {
+		await queryRunner.query(`ALTER TABLE "log" ALTER COLUMN "message" TYPE character varying(2048)`, undefined);
+	}
+
+	public async down(queryRunner: QueryRunner): Promise<void> {
+		await queryRunner.query(`ALTER TABLE "log" ALTER COLUMN "message" TYPE character varying(1024)`, undefined);
+	}
+}
diff --git a/package.json b/package.json
index 68f9bd75bb83bc482af7c8617e7581548f9733d2..44cf2404b72247cbf7baae14768008460ac27417 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
 	"name": "misskey",
 	"author": "syuilo <syuilotan@yahoo.co.jp>",
-	"version": "12.82.0",
+	"version": "12.83.0",
 	"codename": "indigo",
 	"repository": {
 		"type": "git",
@@ -60,7 +60,7 @@
 		"@types/jsonld": "1.5.5",
 		"@types/katex": "0.11.0",
 		"@types/koa": "2.13.3",
-		"@types/koa-bodyparser": "4.3.0",
+		"@types/koa-bodyparser": "4.3.1",
 		"@types/koa-cors": "0.0.0",
 		"@types/koa-favicon": "2.0.19",
 		"@types/koa-logger": "3.1.1",
@@ -70,10 +70,10 @@
 		"@types/koa__cors": "3.0.2",
 		"@types/koa__multer": "2.0.2",
 		"@types/koa__router": "8.0.4",
-		"@types/markdown-it": "12.0.1",
+		"@types/markdown-it": "12.0.2",
 		"@types/matter-js": "0.14.12",
 		"@types/mocha": "8.2.2",
-		"@types/node": "15.6.1",
+		"@types/node": "15.12.2",
 		"@types/node-fetch": "2.5.10",
 		"@types/nodemailer": "6.4.2",
 		"@types/nprogress": "0.2.0",
@@ -91,7 +91,7 @@
 		"@types/request-stats": "3.0.0",
 		"@types/rimraf": "3.0.0",
 		"@types/seedrandom": "2.4.28",
-		"@types/sharp": "0.28.2",
+		"@types/sharp": "0.28.3",
 		"@types/sinonjs__fake-timers": "6.0.2",
 		"@types/speakeasy": "2.0.5",
 		"@types/throttle-debounce": "2.1.0",
@@ -103,18 +103,18 @@
 		"@types/webpack-stream": "3.2.12",
 		"@types/websocket": "1.0.2",
 		"@types/ws": "7.4.4",
-		"@typescript-eslint/parser": "4.25.0",
-		"@vue/compiler-sfc": "3.0.11",
+		"@typescript-eslint/parser": "4.26.1",
+		"@vue/compiler-sfc": "3.1.1",
 		"abort-controller": "3.0.0",
-		"apexcharts": "3.26.3",
+		"apexcharts": "3.27.1",
 		"autobind-decorator": "2.4.0",
 		"autosize": "4.0.4",
 		"autwh": "0.1.0",
-		"aws-sdk": "2.918.0",
+		"aws-sdk": "2.923.0",
 		"bcryptjs": "2.4.3",
 		"blurhash": "1.1.3",
 		"broadcast-channel": "3.6.0",
-		"bull": "3.22.6",
+		"bull": "3.22.7",
 		"cafy": "15.2.1",
 		"cbor": "7.0.5",
 		"chalk": "4.1.1",
@@ -123,14 +123,14 @@
 		"commander": "7.2.0",
 		"concurrently": "6.2.0",
 		"content-disposition": "0.5.3",
-		"core-js": "3.13.1",
+		"core-js": "3.14.0",
 		"crc-32": "1.2.0",
 		"css-loader": "5.2.6",
 		"cssnano": "5.0.5",
 		"dateformat": "4.5.1",
 		"diskusage": "1.1.3",
 		"escape-regexp": "0.0.1",
-		"eslint": "7.27.0",
+		"eslint": "7.28.0",
 		"eslint-plugin-vue": "7.10.0",
 		"eventemitter3": "4.0.7",
 		"feed": "4.2.2",
@@ -174,8 +174,8 @@
 		"markdown-it": "12.0.6",
 		"markdown-it-anchor": "7.1.0",
 		"matter-js": "0.17.1",
-		"mfm-js": "0.16.4",
-		"misskey-js": "0.0.2",
+		"mfm-js": "0.18.0",
+		"misskey-js": "0.0.4",
 		"mocha": "8.4.0",
 		"moji": "0.5.1",
 		"ms": "2.1.3",
@@ -191,7 +191,7 @@
 		"postcss": "8.3.0",
 		"postcss-loader": "5.3.0",
 		"prismjs": "1.23.0",
-		"probe-image-size": "7.1.1",
+		"probe-image-size": "7.2.1",
 		"promise-limit": "2.7.0",
 		"promise-sequential": "1.1.1",
 		"pug": "3.0.2",
@@ -212,8 +212,8 @@
 		"rimraf": "3.0.2",
 		"rndstr": "1.0.0",
 		"s-age": "1.1.2",
-		"sass": "1.34.0",
-		"sass-loader": "11.1.1",
+		"sass": "1.34.1",
+		"sass-loader": "12.0.0",
 		"seedrandom": "3.0.5",
 		"sharp": "0.28.3",
 		"speakeasy": "2.0.0",
@@ -228,20 +228,20 @@
 		"throttle-debounce": "3.0.1",
 		"tinycolor2": "1.4.2",
 		"tmp": "0.2.1",
-		"ts-loader": "9.2.2",
+		"ts-loader": "9.2.3",
 		"ts-node": "10.0.0",
-		"tsc-alias": "1.2.11",
+		"tsc-alias": "1.3.2",
 		"tsconfig-paths": "3.9.0",
 		"tslint": "6.1.3",
 		"tslint-sonarts": "1.9.0",
 		"twemoji-parser": "13.1.0",
-		"typeorm": "0.2.32",
+		"typeorm": "0.2.34",
 		"typescript": "4.3.2",
 		"ulid": "2.3.0",
 		"uuid": "8.3.2",
 		"v-debounce": "0.1.2",
 		"vanilla-tilt": "1.7.0",
-		"vue": "3.0.11",
+		"vue": "3.1.1",
 		"vue-color": "2.8.1",
 		"vue-json-pretty": "1.7.1",
 		"vue-loader": "16.1.2",
@@ -252,7 +252,7 @@
 		"vuedraggable": "4.0.1",
 		"web-push": "3.4.4",
 		"webpack": "5.38.1",
-		"webpack-cli": "4.7.0",
+		"webpack-cli": "4.7.2",
 		"websocket": "1.0.34",
 		"ws": "7.4.6",
 		"xev": "2.0.1"
diff --git a/src/client/components/featured-photos.vue b/src/client/components/featured-photos.vue
index daa2190feb56661f9c3b2cb80cf57cbc6b33d473..c992a5d1fb7fb9712f87af542621ce0e038e7b4c 100644
--- a/src/client/components/featured-photos.vue
+++ b/src/client/components/featured-photos.vue
@@ -1,7 +1,5 @@
 <template>
-<div class="xfbouadm" v-if="meta" :style="{ backgroundImage: `url(${ meta.backgroundImageUrl })` }">
-
-</div>
+<div class="xfbouadm" v-if="meta" :style="{ backgroundImage: `url(${ meta.backgroundImageUrl })` }"></div>
 </template>
 
 <script lang="ts">
diff --git a/src/client/components/link.vue b/src/client/components/link.vue
index 9712c778a9ef241565b4c31be483de44687e98b0..a8874103317cd1c493478f457eaf3875954d14e5 100644
--- a/src/client/components/link.vue
+++ b/src/client/components/link.vue
@@ -87,8 +87,6 @@ export default defineComponent({
 	> .icon {
 		padding-left: 2px;
 		font-size: .9em;
-		font-weight: 400;
-		font-style: normal;
 	}
 }
 </style>
diff --git a/src/client/pages/instance/settings.vue b/src/client/pages/instance/settings.vue
index 66f01c42c77e79ef91fc83460066da8a61e55a9d..b68d784897c04336c304253881cdb0a58c2696a5 100644
--- a/src/client/pages/instance/settings.vue
+++ b/src/client/pages/instance/settings.vue
@@ -19,6 +19,11 @@
 			<span>{{ $ts.bannerUrl }}</span>
 		</FormInput>
 
+		<FormInput v-model:value="backgroundImageUrl">
+			<template #prefix><i class="fas fa-link"></i></template>
+			<span>{{ $ts.backgroundImageUrl }}</span>
+		</FormInput>
+
 		<FormInput v-model:value="tosUrl">
 			<template #prefix><i class="fas fa-link"></i></template>
 			<span>{{ $ts.tosUrl }}</span>
@@ -88,6 +93,7 @@ export default defineComponent({
 			maintainerEmail: null,
 			iconUrl: null,
 			bannerUrl: null,
+			backgroundImageUrl: null,
 			maxNoteTextLength: 0,
 			enableLocalTimeline: false,
 			enableGlobalTimeline: false,
@@ -106,6 +112,7 @@ export default defineComponent({
 			this.tosUrl = meta.tosUrl;
 			this.iconUrl = meta.iconUrl;
 			this.bannerUrl = meta.bannerUrl;
+			this.backgroundImageUrl = meta.backgroundImageUrl;
 			this.maintainerName = meta.maintainerName;
 			this.maintainerEmail = meta.maintainerEmail;
 			this.maxNoteTextLength = meta.maxNoteTextLength;
@@ -120,6 +127,7 @@ export default defineComponent({
 				tosUrl: this.tosUrl,
 				iconUrl: this.iconUrl,
 				bannerUrl: this.bannerUrl,
+				backgroundImageUrl: this.backgroundImageUrl,
 				maintainerName: this.maintainerName,
 				maintainerEmail: this.maintainerEmail,
 				maxNoteTextLength: this.maxNoteTextLength,
diff --git a/src/client/pages/reversi/game.board.vue b/src/client/pages/reversi/game.board.vue
index 78bcf0341352cd94dcd853396e59d365760670e3..0dd36faced1e08fd0067e4fa539a70f2ab983aab 100644
--- a/src/client/pages/reversi/game.board.vue
+++ b/src/client/pages/reversi/game.board.vue
@@ -350,6 +350,9 @@ export default defineComponent({
 </script>
 
 <style lang="scss" scoped>
+
+@use "sass:math";
+
 .xqnhankfuuilcwvhgsopeqncafzsquya {
 	text-align: center;
 
@@ -388,11 +391,11 @@ export default defineComponent({
 				font-size: 0.8em;
 
 				&:first-child {
-					margin-left: -($gap / 2);
+					margin-left: -(math.div($gap, 2));
 				}
 
 				&:last-child {
-					margin-right: -($gap / 2);
+					margin-right: -(math.div($gap, 2));
 				}
 			}
 		}
@@ -413,11 +416,11 @@ export default defineComponent({
 					font-size: 12px;
 
 					&:first-child {
-						margin-top: -($gap / 2);
+						margin-top: -(math.div($gap, 2));
 					}
 
 					&:last-child {
-						margin-bottom: -($gap / 2);
+						margin-bottom: -(math.div($gap, 2));
 					}
 				}
 			}
diff --git a/src/client/pages/settings/drive.vue b/src/client/pages/settings/drive.vue
index 3da2a21dc7aaffd4fecdc3945f93a30a762b772f..83068a8335d147371e73c1818530ab97be59f6b4 100644
--- a/src/client/pages/settings/drive.vue
+++ b/src/client/pages/settings/drive.vue
@@ -220,6 +220,9 @@ export default defineComponent({
 </script>
 
 <style lang="scss" scoped>
+
+@use "sass:math";
+
 .uawsfosz {
 	> div {
 		padding: 24px;
@@ -227,12 +230,12 @@ export default defineComponent({
 		> .meter {
 			$size: 12px;
 			background: rgba(0, 0, 0, 0.1);
-			border-radius: ($size / 2);
+			border-radius: math.div($size, 2);
 			overflow: hidden;
 
 			> div {
 				height: $size;
-				border-radius: ($size / 2);
+				border-radius: math.div($size, 2);
 			}
 		}
 	}
diff --git a/src/docs/es-ES/stream.md b/src/docs/es-ES/stream.md
index c32579c14864448ec551291c247e550a2b4f1c69..f1e5b78c7551e20e72368513607f9cc4b4148399 100644
--- a/src/docs/es-ES/stream.md
+++ b/src/docs/es-ES/stream.md
@@ -1,25 +1,25 @@
-# ストリーミングAPI
+# API de Streaming
 
-ストリーミングAPIを使うと、リアルタイムで様々な情報(例えばタイムラインに新しい投稿が流れてきた、メッセージが届いた、フォローされた、など)を受け取ったり、様々な操作を行ったりすることができます。
+Usando la API de streaming, se puede recibir en tiempo real toda clase de información (por ejemplo, los posts nuevos que pasaron por la linea de tiempo, los mensajes recibidos, las notificaciones de seguimiento, etc.) y manejar varias operaciones en estas.
 
-## ストリームに接続する
+## Conectarse a streams
 
-ストリーミングAPIを利用するには、まずMisskeyサーバーに**websocket**接続する必要があります。
+Para usar la API de streaming, primero hay que conectar un **websocket** al servidor de Misskey
 
-以下のURLに、`i`というパラメータ名で認証情報を含めて、websocket接続してください。例:
+Conecte el websocket a la URL mencionada abajo, incluyendo la información de autenticación en el parámetro `i`Ej:
 ```
 %WS_URL%/streaming?i=xxxxxxxxxxxxxxx
 ```
 
-認証情報は、自分のAPIキーや、アプリケーションからストリームに接続する際はユーザーのアクセストークンのことを指します。
+La información de autenticación hace referencia a tu propia clave de la API, o al token de acceso del usuario cuando se conecta al stream desde la aplicación
 
 <div class="ui info">
-    <p><i class="fas fa-info-circle"></i> 認証情報の取得については、<a href="./api">こちらのドキュメント</a>をご確認ください。</p>
+    <p><i class="fas fa-info-circle"></i> Para obtener la información de la autenticación, consulte <a href="./api">Este documento</a></p>
 </div>
 
 ---
 
-認証情報は省略することもできますが、その場合非ログインでの利用ということになり、受信できる情報や可能な操作は限られます。例:
+La información de autenticación puede omitirse, pero en ese caso de uso sin un login, se restringirá la información que puede ser recibida y las operaciones posibles,Ej:
 
 ```
 %WS_URL%/streaming
@@ -50,7 +50,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
 }
 ```
 
-ここで、
+Aquí
 * `channel`には接続したいチャンネル名を設定します。チャンネルの種類については後述します。
 * `id`にはそのチャンネルとやり取りするための任意のIDを設定します。ストリームでは様々なメッセージが流れるので、そのメッセージがどのチャンネルからのものなのか識別する必要があるからです。このIDは、UUIDや、乱数のようなもので構いません。
 * `params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です。
@@ -76,7 +76,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
 }
 ```
 
-ここで、
+Aquí
 * `id`には前述したそのチャンネルに接続する際に設定したIDが設定されています。これで、このメッセージがどのチャンネルからのものなのか知ることができます。
 * `type`にはメッセージの種類が設定されます。チャンネルによって、どのような種類のメッセージが流れてくるかは異なります。
 * `body`にはメッセージの内容が設定されます。チャンネルによって、どのような内容のメッセージが流れてくるかは異なります。
@@ -98,7 +98,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
 }
 ```
 
-ここで、
+Aquí
 * `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。これで、このメッセージがどのチャンネルに向けたものなのか識別させることができます。
 * `type`にはメッセージの種類を設定します。チャンネルによって、どのような種類のメッセージを受け付けるかは異なります。
 * `body`にはメッセージの内容を設定します。チャンネルによって、どのような内容のメッセージを受け付けるかは異なります。
@@ -115,7 +115,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
 }
 ```
 
-ここで、
+Aquí
 * `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。
 
 ## ストリームを経由してAPIリクエストする
@@ -136,7 +136,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
 }
 ```
 
-ここで、
+Aquí
 * `id`には、APIのレスポンスを識別するための、APIリクエストごとの一意なIDを設定する必要があります。UUIDや、簡単な乱数のようなもので構いません。
 * `endpoint`には、あなたがリクエストしたいAPIのエンドポイントを指定します。
 * `data`には、エンドポイントのパラメータを含めます。
@@ -158,7 +158,7 @@ APIへリクエストすると、レスポンスがストリームから次の
 }
 ```
 
-ここで、
+Aquí
 * `xxxxxxxxxxxxxxxx`の部分には、リクエストの際に設定された`id`が含まれています。これにより、どのリクエストに対するレスポンスなのか判別することができます。
 * `body`には、レスポンスが含まれています。
 
@@ -185,7 +185,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
 }
 ```
 
-ここで、
+Aquí
 * `id`にキャプチャしたい投稿の`id`を設定します。
 
 このメッセージを送信すると、Misskeyにキャプチャを要請したことになり、以後、その投稿に関するイベントが流れてくるようになります。
@@ -206,7 +206,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
 }
 ```
 
-ここで、
+Aquí
 * `body`内の`id`に、イベントを発生させた投稿のIDが設定されます。
 * `body`内の`type`に、イベントの種類が設定されます。
 * `body`内の`body`に、イベントの詳細が設定されます。
@@ -219,7 +219,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
 * `reaction`に、リアクションの種類が設定されます。
 * `userId`に、リアクションを行ったユーザーのIDが設定されます。
 
-例:
+Ej:
 ```json
 {
     type: 'noteUpdated',
@@ -239,7 +239,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
 
 * `deletedAt`に、削除日時が設定されます。
 
-例:
+Ej:
 ```json
 {
     type: 'noteUpdated',
@@ -259,7 +259,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
 * `choice`に、選択肢IDが設定されます。
 * `userId`に、投票を行ったユーザーのIDが設定されます。
 
-例:
+Ej:
 ```json
 {
     type: 'noteUpdated',
@@ -289,7 +289,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
 }
 ```
 
-ここで、
+Aquí
 * `id`にキャプチャを解除したい投稿の`id`を設定します。
 
 このメッセージを送信すると、以後、その投稿に関するイベントは流れてこないようになります。
diff --git a/src/docs/es-ES/theme.md b/src/docs/es-ES/theme.md
index 3e379ee5f5ceba4dfe3d43288307a0f9b750af7f..090b40e6a1c358f56285f5c5beab48e19cb86906 100644
--- a/src/docs/es-ES/theme.md
+++ b/src/docs/es-ES/theme.md
@@ -1,12 +1,12 @@
 # Tema
 
-テーマを設定して、Misskeyクライアントの見た目を変更できます。
+Eligiendo un tema, se puede cambiar la apariencia del cliente de Misskey
 
-## テーマの設定
-設定 > テーマ
+## Configuración del tema
+Configuración > Tema
 
-## テーマを作成する
-テーマコードはJSON5で記述されたテーマオブジェクトです。 テーマは以下のようなオブジェクトです。
+## Crear tema
+El código del tema se guarda como un archivo JSON5. Un ejemplo de tema se puede ver aquí:
 ``` js
 {
     id: '17587283-dd92-4a2c-a22c-be0637c9e22a',
@@ -33,36 +33,36 @@
 
 ```
 
-* `id` ... テーマの一意なID。UUIDをおすすめします。
-* `name` ... テーマ名
-* `author` ... テーマの作者
-* `desc` ... テーマの説明(オプション)
-* `base` ... 明るいテーマか、暗いテーマか
-    * `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。
-    * テーマはここで設定されたベーステーマを継承します。
-* `props` ... テーマのスタイル定義。これから説明します。
+* `id` ... Clave única del tema.Se recomienda un código UUID
+* `name` ... Nombre del tema
+* `author` ... Autor del tema
+* `desc` ... Descripción del tema (opcional)
+* `base` ... Si es un tema claro u oscuro
+    * Si se elige `light`, será un tema claro. Si se elige `dark`, será un tema oscuro.
+    * Aquí el tema hereda los valores por defecto del tema base elegido
+* `props` ... Definición del estilo del tema. Esto se explica en lo siguiente.
 
-### テーマのスタイル定義
-`props`下にはテーマのスタイルを定義します。 キーがCSSの変数名になり、バリューで中身を指定します。 なお、この`props`オブジェクトはベーステーマから継承されます。 ベーステーマは、このテーマの`base`が`light`なら[_light.json5](https://github.com/misskey-dev/misskey/blob/develop/src/client/themes/_light.json5)で、`dark`なら[_dark.json5](https://github.com/misskey-dev/misskey/blob/develop/src/client/themes/_dark.json5)です。 つまり、このテーマ内の`props`に`panel`というキーが無くても、そこにはベーステーマの`panel`があると見なされます。
+### Definición del estilo del tema
+Debajo de `props`, se define el estilo del tema. La clave es el nombre de las variables del CSS, y con los valores estos se configuran. Incluso más, este objeto `props` hereda los valores por defecto del tema base. El tema base es [_light.json5](https://github.com/misskey-dev/misskey/blob/develop/src/client/themes/_light.json5) si el `base` de este tema es `light`, y [_dark.json5](https://github.com/misskey-dev/misskey/blob/develop/src/client/themes/_dark.json5) si si el `base` de este tema es `dark` Resumiendo, aunque no haya una clave `panel` en el `props` del tema, se considera el <0>panel</0> del tema base.
 
-#### バリューで使える構文
-* 16進数で表された色
-    * 例: `#00ff00`
-* `rgb(r, g, b)`形式で表された色
-    * 例: `rgb(0, 255, 0)`
-* `rgb(r, g, b, a)`形式で表された透明度を含む色
-    * 例: `rgba(0, 255, 0, 0.5)`
-* 他のキーの値の参照
-    * `@{キー名}`と書くと他のキーの値の参照になります。`{キー名}`は参照したいキーの名前に置き換えます。
-    * 例: `@panel`
-* 定数(後述)の参照
-    * `${定数名}`と書くと定数の参照になります。`{定数名}`は参照したい定数の名前に置き換えます。
-    * 例: `$main`
-* 関数(後述)
-    * `:{関数名}<{引数}<{色}`
+#### Sintaxis de las variables
+* Los colores en base hexadecimal
+    * Ej: `#00ff00`
+* Los colores con la sintaxis `rgb(r, g, b)`
+    * Ej: `rgb(0, 255, 0)`
+* Los colores con la sintaxis `rgb(r, g, b, a)` con un grado de transparencia
+    * Ej: `rgba(0, 255, 0, 0.5)`
+* Referencias a valores de otras claves
+    * Escribiendo `@{nombre de clave}` se hace referencia al valor de la otra clave.Reemplace `{nombre de clave}` por el nombre de la clave al cual quiera hacer referencia.
+    * Ej: `@panel`
+* Referencia a una constante (ver más abajo)
+    * Escribiendo `${nombre de la constante}` se hace referencia a la constante.Reemplace `{nombre de la constante}` por la constante al cual quiera hacer referencia.
+    * Ej: `$main`
+* Funciones (ver más abajo)
+    * `:{nombre de la función}<{parámetros}<{color}`
 
-#### Constante
-「CSS変数として出力はしたくないが、他のCSS変数の値として使いまわしたい」値があるときは、定数を使うと便利です。 キー名を`$`で始めると、そのキーはCSS変数として出力されません。
+#### Constantes
+Cuando hay un valor que no se quiere generar como variable CSS pero sí se quiere reutilizar como valor de otra variable CSS, es conveniente usar constantes. Cuando a un nombre de clave se le añade como prefijo `$`, esa clave no será generada como una variable CSS.
 
 #### funciones
 wip
diff --git a/src/docs/es-ES/timelines.md b/src/docs/es-ES/timelines.md
index d2ee592fd8c275d4a902645ae136ef135da3a68e..60834cfda38d90f937d829629e264d48424cbb15 100644
--- a/src/docs/es-ES/timelines.md
+++ b/src/docs/es-ES/timelines.md
@@ -1,15 +1,15 @@
-# タイムラインの比較
+# Comparación de las lineas de tiempo
 
 https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing
 
 ## Inicio
-自分のフォローしているユーザーの投稿
+Los posts de los usuarios que uno sigue
 
 ## Local
-全てのローカルユーザーの「ホーム」指定されていない投稿
+Todos los posts de los usuarios locales que no estén marcados como "Solo inicio"
 
 ## Social
-自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿
+Los posts de los usuarios que uno sigue más todos los posts de los usuarios locales que no estén marcados como "Solo inicio"
 
 ## Global
-全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿
+Todos los posts de los usuarios locales que no estén marcados como "Solo inicio" más todos los posts de los usuarios remotos recibidos por el servidor que no estén marcados como "Solo inicio"
diff --git a/src/docs/ko-KR/api.md b/src/docs/ko-KR/api.md
index 057749ca6d2e3d56167ba0a27a90c40398f86a4d..88559013dd1a61240ad930039ff35fd63f7e5963 100644
--- a/src/docs/ko-KR/api.md
+++ b/src/docs/ko-KR/api.md
@@ -7,11 +7,11 @@ API를 사용하려면 먼저 액세스 토큰을 취득해야 합니다. 이 
 ## 액세스 토큰 가져오기
 기본적으로 API는 요청 시에 액세스 토큰이 필요합니다. API에 요청하는 것이 자기 자신인지, 불특정한 유저에게 사용하는 애플리케이션인지에 따라 취득 절차가 달라집니다.
 
-* 전자의 경우: [ 「자기 자신의 액세스 토큰을 수동으로 발급하기」](#自分自身のアクセストークンを手動発行する)로 진행
+* 전자의 경우: [「자기 자신의 액세스 토큰을 수동으로 발급하기」](#自分自身のアクセストークンを手動発行する)로 진행
 * 후자의 경우: [「애플리케이션 사용자에게 액세스 토큰 발급을 요청하기」](#アプリケーション利用者にアクセストークンの発行をリクエストする)로 진행
 
 ### 자기 자신의 액세스 토큰을 수동으로 발급하기
-「설정 &#062 API」에서 자신의 액세스 토큰을 발급할 수 있습니다.
+「설정 > API」에서 자신의 액세스 토큰을 발급할 수 있습니다.
 
 [「API 사용 방법」으로 이동](#APIの使い方)
 
diff --git a/src/docs/ko-KR/mfm.md b/src/docs/ko-KR/mfm.md
index 854de1ba90e2f50b3a481c4f352d16e97d076b8f..c9e8a5a4dde04989f7ac40068fe32963a7899d48 100644
--- a/src/docs/ko-KR/mfm.md
+++ b/src/docs/ko-KR/mfm.md
@@ -1,2 +1,2 @@
 # MFM
-MFM은 Misskey Flavored Markdown의 약자로, Misskey의 다양한 장소에서 사용할 수 있는 전용 마크업 언어입니다. MFM로 사용 가능한 구문은 [MFM 치트 시트 ](/mfm-cheat-sheet)에서 확인할 수 있습니다.
+MFM은 Misskey Flavored Markdown의 약자로, Misskey의 다양한 장소에서 사용할 수 있는 전용 마크업 언어입니다. MFM로 사용 가능한 구문은 [MFM 치트 시트](/mfm-cheat-sheet)에서 확인할 수 있습니다.
diff --git a/src/misc/before-shutdown.ts b/src/misc/before-shutdown.ts
index 8639d42b0415162314f52d1d0f44acd66c50e211..33abf5fb4d95f7118699744cec23f77d4907b3df 100644
--- a/src/misc/before-shutdown.ts
+++ b/src/misc/before-shutdown.ts
@@ -56,6 +56,8 @@ const forceExitAfter = timeout => () => {
  * @param {string} signalOrEvent The exit signal or event name received on the process.
  */
 async function shutdownHandler(signalOrEvent) {
+	if (process.env.NODE_ENV === 'test') return process.exit(0);
+
 	console.warn(`Shutting down: received [${signalOrEvent}] signal`);
 
 	for (const listener of shutdownListeners) {
diff --git a/src/models/repositories/blocking.ts b/src/models/repositories/blocking.ts
index 60b43fae3e3937eeb997ebd9675f82b01ff50c33..9a4f3f6c68bae551250d33880e973c6a709f2718 100644
--- a/src/models/repositories/blocking.ts
+++ b/src/models/repositories/blocking.ts
@@ -41,14 +41,12 @@ export const packedBlockingSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this blocking.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the blocking was created.'
 		},
 		blockeeId: {
 			type: 'string' as const,
@@ -59,7 +57,6 @@ export const packedBlockingSchema = {
 			type: 'object' as const,
 			optional: false as const, nullable: false as const,
 			ref: 'User',
-			description: 'The blockee.'
 		},
 	}
 };
diff --git a/src/models/repositories/channel.ts b/src/models/repositories/channel.ts
index a1c85f2bd734bbc1f4145a21bd333bdd4def3f78..3a6bd4c923963e1e6fd8e4c93023a187357bff37 100644
--- a/src/models/repositories/channel.ts
+++ b/src/models/repositories/channel.ts
@@ -51,14 +51,12 @@ export const packedChannelSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this Channel.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the Channel was created.'
 		},
 		lastNotedAt: {
 			type: 'string' as const,
@@ -68,7 +66,6 @@ export const packedChannelSchema = {
 		name: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
-			description: 'The name of the Channel.'
 		},
 		description: {
 			type: 'string' as const,
diff --git a/src/models/repositories/clip.ts b/src/models/repositories/clip.ts
index 8d1f63c44b38a9ff378a70571c29a223a749264b..293807b125a5a49dfab5d338838944d9c2b44bb2 100644
--- a/src/models/repositories/clip.ts
+++ b/src/models/repositories/clip.ts
@@ -39,14 +39,12 @@ export const packedClipSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this Clip.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the Clip was created.'
 		},
 		userId: {
 			type: 'string' as const,
@@ -61,17 +59,14 @@ export const packedClipSchema = {
 		name: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
-			description: 'The name of the Clip.'
 		},
 		description: {
 			type: 'string' as const,
 			optional: false as const, nullable: true as const,
-			description: 'The description of the Clip.'
 		},
 		isPublic: {
 			type: 'boolean' as const,
 			optional: false as const, nullable: false as const,
-			description: 'Whether this Clip is public.',
 		},
 	},
 };
diff --git a/src/models/repositories/drive-file.ts b/src/models/repositories/drive-file.ts
index 92bf12a4e056c4fdc14d4022cb7b40000c06fd6c..675faca8e30bf79fd9f5c761f634495efddd7c65 100644
--- a/src/models/repositories/drive-file.ts
+++ b/src/models/repositories/drive-file.ts
@@ -154,44 +154,37 @@ export const packedDriveFileSchema = {
 			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.'
 		},
 		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'
 		},
 		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'
 		},
 		size: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			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,
@@ -222,13 +215,11 @@ export const packedDriveFileSchema = {
 			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,
@@ -238,26 +229,22 @@ export const packedDriveFileSchema = {
 			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',
 		},
 		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/drive-folder.ts b/src/models/repositories/drive-folder.ts
index cc07c56675b3115ab96e7c5678a654d6444d3a3f..d1922c96f887d387b21d5c6ac5bf214616f2a369 100644
--- a/src/models/repositories/drive-folder.ts
+++ b/src/models/repositories/drive-folder.ts
@@ -59,35 +59,29 @@ export const packedDriveFolderSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this Drive folder.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the Drive folder was created.'
 		},
 		name: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
-			description: 'The folder name.',
 		},
 		foldersCount: {
 			type: 'number' as const,
 			optional: true as const, nullable: false as const,
-			description: 'The count of child folders.',
 		},
 		filesCount: {
 			type: 'number' as const,
 			optional: true as const, nullable: false as const,
-			description: 'The count of child files.',
 		},
 		parentId: {
 			type: 'string' as const,
 			optional: false as const, nullable: true as const,
 			format: 'id',
-			description: 'The parent folder ID of this folder.',
 			example: 'xxxxxxxxxx',
 		},
 		parent: {
diff --git a/src/models/repositories/following.ts b/src/models/repositories/following.ts
index b886432978cfa477c946ff6fb1a025f0852d98cf..3aed83f320b99bb1d0d81e75c5755b5db7383098 100644
--- a/src/models/repositories/following.ts
+++ b/src/models/repositories/following.ts
@@ -95,14 +95,12 @@ export const packedFollowingSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this following.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the following was created.'
 		},
 		followeeId: {
 			type: 'string' as const,
@@ -113,7 +111,6 @@ export const packedFollowingSchema = {
 			type: 'object' as const,
 			optional: true as const, nullable: false as const,
 			ref: 'User',
-			description: 'The followee.'
 		},
 		followerId: {
 			type: 'string' as const,
@@ -124,7 +121,6 @@ export const packedFollowingSchema = {
 			type: 'object' as const,
 			optional: true as const, nullable: false as const,
 			ref: 'User',
-			description: 'The follower.'
 		},
 	}
 };
diff --git a/src/models/repositories/hashtag.ts b/src/models/repositories/hashtag.ts
index 0089ab50dbf73eaa38ed0b676dea71038fd87d3f..3fee2f771df001dd89b1710b71fdbb63e5b718c9 100644
--- a/src/models/repositories/hashtag.ts
+++ b/src/models/repositories/hashtag.ts
@@ -34,38 +34,31 @@ export const packedHashtagSchema = {
 		tag: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
-			description: 'The hashtag name. No # prefixed.',
 			example: 'misskey',
 		},
 		mentionedUsersCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: 'Number of all users using this hashtag.'
 		},
 		mentionedLocalUsersCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: 'Number of local users using this hashtag.'
 		},
 		mentionedRemoteUsersCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: 'Number of remote users using this hashtag.'
 		},
 		attachedUsersCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: 'Number of all users who attached this hashtag to profile.'
 		},
 		attachedLocalUsersCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: 'Number of local users who attached this hashtag to profile.'
 		},
 		attachedRemoteUsersCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: 'Number of remote users who attached this hashtag to profile.'
 		},
 	}
 };
diff --git a/src/models/repositories/messaging-message.ts b/src/models/repositories/messaging-message.ts
index 8d6d03a23699a77a1e32567e5d321c0521aa0df5..c77b14ca7f35e27793ac0364e9fecea9daaa9c32 100644
--- a/src/models/repositories/messaging-message.ts
+++ b/src/models/repositories/messaging-message.ts
@@ -53,14 +53,12 @@ export const packedMessagingMessageSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this MessagingMessage.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the MessagingMessage was created.'
 		},
 		userId: {
 			type: 'string' as const,
diff --git a/src/models/repositories/muting.ts b/src/models/repositories/muting.ts
index b5bbe8a0a30178a3881167b81937a3d954069e4a..32e681bf0bd9015a26365929b8331ca4be909a65 100644
--- a/src/models/repositories/muting.ts
+++ b/src/models/repositories/muting.ts
@@ -41,14 +41,12 @@ export const packedMutingSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this muting.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the muting was created.'
 		},
 		muteeId: {
 			type: 'string' as const,
@@ -59,7 +57,6 @@ export const packedMutingSchema = {
 			type: 'object' as const,
 			optional: false as const, nullable: false as const,
 			ref: 'User',
-			description: 'The mutee.'
 		},
 	}
 };
diff --git a/src/models/repositories/note-favorite.ts b/src/models/repositories/note-favorite.ts
index 316ebdff351be19468bfe700e572deb7751719b0..e58b258fcb44e6664ae0def60f0a11f6926f39b7 100644
--- a/src/models/repositories/note-favorite.ts
+++ b/src/models/repositories/note-favorite.ts
@@ -35,14 +35,12 @@ export const packedNoteFavoriteSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this favorite.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the favorite was created.'
 		},
 		note: {
 			type: 'object' as const,
diff --git a/src/models/repositories/note-reaction.ts b/src/models/repositories/note-reaction.ts
index 4c568096030942f4ea3b1f670d99d8aa150d7e63..5de9e1be658b375ac299c7c7161c71ce10b6a6df 100644
--- a/src/models/repositories/note-reaction.ts
+++ b/src/models/repositories/note-reaction.ts
@@ -32,25 +32,21 @@ export const packedNoteReactionSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this reaction.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the reaction was created.'
 		},
 		user: {
 			type: 'object' as const,
 			optional: false as const, nullable: false as const,
 			ref: 'User',
-			description: 'User who performed this reaction.'
 		},
 		type: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
-			description: 'The reaction type.'
 		},
 	},
 };
diff --git a/src/models/repositories/note.ts b/src/models/repositories/note.ts
index 7b1df730247098b4aa35a28207b0adeb92dea0a6..df0ca8c6ad795fcb0f8dab53b55651ca1d3195f9 100644
--- a/src/models/repositories/note.ts
+++ b/src/models/repositories/note.ts
@@ -281,14 +281,12 @@ export const packedNoteSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this Note.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the Note was created on Misskey.'
 		},
 		text: {
 			type: 'string' as const,
@@ -426,7 +424,6 @@ export const packedNoteSchema = {
 		reactions: {
 			type: 'object' as const,
 			optional: false as const, nullable: false as const,
-			description: 'Key is either Unicode emoji or custom emoji, value is count of that emoji reaction.',
 		},
 		renoteCount: {
 			type: 'number' as const,
@@ -439,18 +436,15 @@ export const packedNoteSchema = {
 		uri: {
 			type: 'string' as const,
 			optional: false as const, nullable: true as const,
-			description: 'The URI of a note. it will be null when the note is local.',
 		},
 		url: {
 			type: 'string' as const,
 			optional: false as const, nullable: true as const,
-			description: 'The human readable url of a note. it will be null when the note is local.',
 		},
 
 		myReaction: {
 			type: 'object' as const,
 			optional: true as const, nullable: true as const,
-			description: 'Key is either Unicode emoji or custom emoji, value is count of that emoji reaction.',
 		},
 	},
 };
diff --git a/src/models/repositories/notification.ts b/src/models/repositories/notification.ts
index abadea4632940ca26407fe46c25e2a0071996795..94a2c3c91a1039c31129399f3db6d109e5b46fb0 100644
--- a/src/models/repositories/notification.ts
+++ b/src/models/repositories/notification.ts
@@ -117,20 +117,17 @@ export const packedNotificationSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this notification.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the notification was created.'
 		},
 		type: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			enum: ['follow', 'followRequestAccepted', 'receiveFollowRequest', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote'],
-			description: 'The type of the notification.'
 		},
 		userId: {
 			type: 'string' as const,
diff --git a/src/models/repositories/user-group.ts b/src/models/repositories/user-group.ts
index 9861b23356bc977e705c2eaf8b7073bb302a3d06..c7d73ebe261be5e3aac88688b64a0d874d0e725e 100644
--- a/src/models/repositories/user-group.ts
+++ b/src/models/repositories/user-group.ts
@@ -34,19 +34,16 @@ export const packedUserGroupSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this UserGroup.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the UserGroup was created.'
 		},
 		name: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
-			description: 'The name of the UserGroup.'
 		},
 		ownerId: {
 			type: 'string' as const,
diff --git a/src/models/repositories/user-list.ts b/src/models/repositories/user-list.ts
index 094abace63d1725eb140bf053df778a9e06152a4..7710bebfcc4c439dae7f97ec52b83a400c790e12 100644
--- a/src/models/repositories/user-list.ts
+++ b/src/models/repositories/user-list.ts
@@ -33,19 +33,16 @@ export const packedUserListSchema = {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'id',
-			description: 'The unique identifier for this UserList.',
 			example: 'xxxxxxxxxx',
 		},
 		createdAt: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
 			format: 'date-time',
-			description: 'The date that the UserList was created.'
 		},
 		name: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
-			description: 'The name of the UserList.'
 		},
 		userIds: {
 			type: 'array' as const,
diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts
index 1ebc16a5638dcfa46de9ddad1770bb5799ba1d5e..90a91987fbe3e73675d27c8cc431a72e13d7237e 100644
--- a/src/models/repositories/user.ts
+++ b/src/models/repositories/user.ts
@@ -342,19 +342,16 @@ export const packedUserSchema = {
 			type: 'string' as const,
 			nullable: false as const, optional: false as const,
 			format: 'id',
-			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'
 		},
 		host: {
@@ -379,24 +376,20 @@ export const packedUserSchema = {
 		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,
@@ -438,7 +431,6 @@ export const packedUserSchema = {
 			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,
@@ -471,7 +463,6 @@ export const packedUserSchema = {
 		description: {
 			type: 'string' as const,
 			nullable: true as const, optional: true as const,
-			description: 'The user-defined UTF-8 string describing their account.',
 			example: 'Hi masters, I am Ai!'
 		},
 		location: {
@@ -505,17 +496,14 @@ export const packedUserSchema = {
 		followersCount: {
 			type: 'number' as const,
 			nullable: false as const, optional: true as const,
-			description: 'The number of followers this account currently has.'
 		},
 		followingCount: {
 			type: 'number' as const,
 			nullable: false as const, optional: true as const,
-			description: 'The number of users this account is following.'
 		},
 		notesCount: {
 			type: 'number' as const,
 			nullable: false as const, optional: true as const,
-			description: 'The number of Notes (including renotes) issued by the user.'
 		},
 		pinnedNoteIds: {
 			type: 'array' as const,
diff --git a/src/remote/activitypub/type.ts b/src/remote/activitypub/type.ts
index 98025da908f47123513c33ea81263559dd269333..3728470686c8328de3322aabf6f63db7cce2912e 100644
--- a/src/remote/activitypub/type.ts
+++ b/src/remote/activitypub/type.ts
@@ -3,7 +3,7 @@ export type ApObject = IObject | string | (IObject | string)[];
 
 export interface IObject {
 	'@context': string | obj | obj[];
-	type: string | unknown[];
+	type: string | string[];
 	id?: string;
 	summary?: string;
 	published?: string;
diff --git a/src/server/api/endpoints.ts b/src/server/api/endpoints.ts
index 9847cd2bb6c8f47e9de698299feb70d6632cad63..24b58b873c1936909cd99227e6057652be15664d 100644
--- a/src/server/api/endpoints.ts
+++ b/src/server/api/endpoints.ts
@@ -8,15 +8,12 @@ export type Param = {
 	transform?: any;
 	default?: any;
 	deprecated?: boolean;
-	desc?: { [key: string]: string };
 	ref?: string;
 };
 
 export interface IEndpointMeta {
 	stability?: string; //'deprecated' | 'experimental' | 'stable';
 
-	desc?: { [key: string]: string };
-
 	tags?: string[];
 
 	params?: {
diff --git a/src/server/api/endpoints/admin/abuse-user-reports.ts b/src/server/api/endpoints/admin/abuse-user-reports.ts
index bbb696394ef929c995ef5a1c3db97ac8155cb9e9..02291a3edd70bda21bda21648f7f24b136e5b3d4 100644
--- a/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -5,11 +5,6 @@ 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,
@@ -64,43 +59,36 @@ export const meta = {
 					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,
diff --git a/src/server/api/endpoints/admin/accounts/create.ts b/src/server/api/endpoints/admin/accounts/create.ts
index 9e3fc46acd5f468b0f59e63ae87c9dae4a9faa82..bceb210a82a0658a6f856a45d85701af41d369a6 100644
--- a/src/server/api/endpoints/admin/accounts/create.ts
+++ b/src/server/api/endpoints/admin/accounts/create.ts
@@ -3,11 +3,6 @@ import { Users } from '../../../../../models';
 import { signup } from '../../../common/signup';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'アカウントを作成します。',
-		'en-US': 'Create a account.'
-	},
-
 	tags: ['admin'],
 
 	params: {
@@ -28,7 +23,6 @@ export const meta = {
 			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 3675e50bac70a7fd025adc66aaa24e26f02a9b72..794c35023b8194d79358771d239325b9f4e2eef3 100644
--- a/src/server/api/endpoints/admin/announcements/create.ts
+++ b/src/server/api/endpoints/admin/announcements/create.ts
@@ -4,11 +4,6 @@ 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,
@@ -34,35 +29,29 @@ export const meta = {
 				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 44a46ae435b12f0407b97aeeb6fdab0b7163500a..6c28054da81c468cc3cec8e06f94231ab73e6063 100644
--- a/src/server/api/endpoints/admin/announcements/delete.ts
+++ b/src/server/api/endpoints/admin/announcements/delete.ts
@@ -10,11 +10,6 @@ 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 a42f24c45e17dfadbf1b7f0df9131ab6c63c2a97..a14f0c0bdc9a7abf8c4b36bac518c3546e9b491a 100644
--- a/src/server/api/endpoints/admin/announcements/list.ts
+++ b/src/server/api/endpoints/admin/announcements/list.ts
@@ -5,11 +5,6 @@ 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,
@@ -41,40 +36,33 @@ export const meta = {
 					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 c869e7c9c64ab11bbde4f7f68c87624ed503bc8f..6e9a43d346d4e269a59635ae6ce614bbf25cf014 100644
--- a/src/server/api/endpoints/admin/announcements/update.ts
+++ b/src/server/api/endpoints/admin/announcements/update.ts
@@ -5,11 +5,6 @@ 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 8143239b54762e1f6fc31255086128df7be0224c..3d49689cd7ba195a6b754a447d7a5abd6a0881a2 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,11 +5,6 @@ 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,
@@ -18,10 +13,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID which you want to suspend'
-			}
 		},
 	}
 };
diff --git a/src/server/api/endpoints/admin/delete-logs.ts b/src/server/api/endpoints/admin/delete-logs.ts
index 1caea46ea0a6f939a08f9560cf6bd835f3910c83..410588bc015f454b519ff348c65087441521b439 100644
--- a/src/server/api/endpoints/admin/delete-logs.ts
+++ b/src/server/api/endpoints/admin/delete-logs.ts
@@ -2,11 +2,6 @@ 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 20856da1cf22298c36add2de0f088390fcd03662..5a5adb8a8bfaab76c4c0ad23f1a85063de973650 100644
--- a/src/server/api/endpoints/admin/drive/clean-remote-files.ts
+++ b/src/server/api/endpoints/admin/drive/clean-remote-files.ts
@@ -2,11 +2,6 @@ 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 f4867597f3181f26a879c931f96f58742a91c55d..b76236a7f04ae1472ef702e05a169404e7c1cc2f 100644
--- a/src/server/api/endpoints/admin/drive/cleanup.ts
+++ b/src/server/api/endpoints/admin/drive/cleanup.ts
@@ -4,11 +4,6 @@ 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 1a5c940f1ed99b72c4e79eeabb6aae2b162c3d28..efeef83ca3f75435ef8b7fc2ae4ecaf2bd5b84f8 100644
--- a/src/server/api/endpoints/admin/drive/files.ts
+++ b/src/server/api/endpoints/admin/drive/files.ts
@@ -5,11 +5,6 @@ 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,
diff --git a/src/server/api/endpoints/admin/drive/show-file.ts b/src/server/api/endpoints/admin/drive/show-file.ts
index cfe25306c267a4e0ea93463037e36d181ac5775f..3489e5c816f54afd251d47d4b01e6eda331c9112 100644
--- a/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/src/server/api/endpoints/admin/drive/show-file.ts
@@ -36,20 +36,17 @@ export const meta = {
 				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: {
@@ -60,25 +57,21 @@ export const meta = {
 				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: {
@@ -113,41 +106,34 @@ export const meta = {
 			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,
@@ -161,13 +147,11 @@ export const meta = {
 				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,
diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
index 04eac79d6ab75d65a4b913d099c1e6af728fc90f..0d4550bf3c692c1cc3162424d8bf13c8641bca98 100644
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ b/src/server/api/endpoints/admin/emoji/add.ts
@@ -10,10 +10,6 @@ import rndstr from 'rndstr';
 import { publishBroadcastStream } from '../../../../../services/stream';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'カスタム絵文字を追加します。'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/emoji/copy.ts b/src/server/api/endpoints/admin/emoji/copy.ts
index 7df7830072c1bbed9c5b394155dfaeef03c23610..1a784f4061f06c24204e21f5b8addf76eae1bd39 100644
--- a/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/src/server/api/endpoints/admin/emoji/copy.ts
@@ -9,11 +9,6 @@ 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,
@@ -41,7 +36,6 @@ export const meta = {
 				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 6a4e86c342c85158f606e6629730d8788b5f55f0..570db064ec742077876e96696f1234d8ffbb5cb9 100644
--- a/src/server/api/endpoints/admin/emoji/list-remote.ts
+++ b/src/server/api/endpoints/admin/emoji/list-remote.ts
@@ -6,11 +6,6 @@ import { makePaginationQuery } from '../../../common/make-pagination-query';
 import { ID } from '@/misc/cafy-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'リモートのカスタム絵文字一覧を取得します。',
-		'en-US': 'Gets a list of remote custom emojis.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -19,12 +14,12 @@ export const meta = {
 	params: {
 		query: {
 			validator: $.optional.nullable.str,
-			default: null as any
+			default: null
 		},
 
 		host: {
 			validator: $.optional.nullable.str,
-			default: null as any
+			default: null
 		},
 
 		limit: {
@@ -52,12 +47,10 @@ export const meta = {
 					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
@@ -66,22 +59,18 @@ export const meta = {
 				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 9e50ce61c86969724ac38c6234817e04eb22c577..b864fed4b0097d0c8d81cb5165366056391e11af 100644
--- a/src/server/api/endpoints/admin/emoji/list.ts
+++ b/src/server/api/endpoints/admin/emoji/list.ts
@@ -6,11 +6,6 @@ import { ID } from '@/misc/cafy-id';
 import { Emoji } from '../../../../../models/entities/emoji';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'カスタム絵文字一覧を取得します。',
-		'en-US': 'List custom emojis.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -19,7 +14,7 @@ export const meta = {
 	params: {
 		query: {
 			validator: $.optional.nullable.str,
-			default: null as any
+			default: null
 		},
 
 		limit: {
@@ -47,12 +42,10 @@ export const meta = {
 					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
@@ -61,22 +54,18 @@ export const meta = {
 				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/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts
index 3f87dded3b6a7446b199e6f84366430abc048bcf..22bbc76e783ec7dd7ca3fd27882bb87d12987e12 100644
--- a/src/server/api/endpoints/admin/emoji/remove.ts
+++ b/src/server/api/endpoints/admin/emoji/remove.ts
@@ -7,10 +7,6 @@ import { insertModerationLog } from '../../../../../services/insert-moderation-l
 import { ApiError } from '../../../error';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'カスタム絵文字を削除します。'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts
index 2fa6587e2b8ac3559b1cb8fe10f3fff39d8c4d3c..70589d5cf7ae3177d2b0f7f1e589aac9235809b6 100644
--- a/src/server/api/endpoints/admin/emoji/update.ts
+++ b/src/server/api/endpoints/admin/emoji/update.ts
@@ -6,10 +6,6 @@ import { getConnection } from 'typeorm';
 import { ApiError } from '../../../error';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'カスタム絵文字を更新します。'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
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 c0a8c94f4cbcc9a0b6ce2717a148f5757759d85d..eef53cd92ca1e36c2109d511af292e3fd3e2663b 100644
--- a/src/server/api/endpoints/admin/federation/delete-all-files.ts
+++ b/src/server/api/endpoints/admin/federation/delete-all-files.ts
@@ -4,11 +4,6 @@ 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 4a6f6e6261e5bab95a08fe911988535d989a2bc7..e593193552968e8bf599b205dfe5fc9334081fe0 100644
--- a/src/server/api/endpoints/admin/federation/remove-all-following.ts
+++ b/src/server/api/endpoints/admin/federation/remove-all-following.ts
@@ -4,11 +4,6 @@ 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 3e9d243d74cdf3668af095afa1864e669c765a49..2d559e43e84e597aa56afd9c2314e245b98b54bb 100644
--- a/src/server/api/endpoints/admin/federation/update-instance.ts
+++ b/src/server/api/endpoints/admin/federation/update-instance.ts
@@ -4,11 +4,6 @@ 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 351c230033a41a31b533964cdffcb940a7603ce0..bce813232bc19e6080552446a37a2ecae739ad9d 100644
--- a/src/server/api/endpoints/admin/get-table-stats.ts
+++ b/src/server/api/endpoints/admin/get-table-stats.ts
@@ -5,11 +5,6 @@ export const meta = {
 	requireCredential: true as const,
 	requireModerator: true,
 
-	desc: {
-		'ja-JP': 'テーブル情報を取得します。',
-		'en-US': 'Get table stats'
-	},
-
 	tags: ['admin'],
 
 	params: {
diff --git a/src/server/api/endpoints/admin/invite.ts b/src/server/api/endpoints/admin/invite.ts
index 2a87fae7140410da8b375f9ad1bc887874c9a18d..141f27d95e6a256a201cbcb72b6f637893ef3e77 100644
--- a/src/server/api/endpoints/admin/invite.ts
+++ b/src/server/api/endpoints/admin/invite.ts
@@ -4,11 +4,6 @@ import { RegistrationTickets } from '../../../../models';
 import { genId } from '@/misc/gen-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': '招待コードを発行します。',
-		'en-US': 'Issue an invitation code.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -23,7 +18,6 @@ export const meta = {
 			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
diff --git a/src/server/api/endpoints/admin/logs.ts b/src/server/api/endpoints/admin/logs.ts
index 5e19b1a6f45bc1dd74909786b8a43ff6dd344de8..1ec732039965ed38e866596466da18f51542e48b 100644
--- a/src/server/api/endpoints/admin/logs.ts
+++ b/src/server/api/endpoints/admin/logs.ts
@@ -4,11 +4,6 @@ import { Logs } from '../../../../models';
 import { Brackets } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ログを表示します。',
-		'en-US': 'Show logs.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -22,12 +17,12 @@ export const meta = {
 
 		level: {
 			validator: $.optional.nullable.str,
-			default: null as any
+			default: null
 		},
 
 		domain: {
 			validator: $.optional.nullable.str,
-			default: null as any
+			default: null
 		}
 	},
 
@@ -42,14 +37,12 @@ export const meta = {
 					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,
@@ -70,12 +63,10 @@ export const meta = {
 				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,
diff --git a/src/server/api/endpoints/admin/moderators/add.ts b/src/server/api/endpoints/admin/moderators/add.ts
index a96cf35db18f475154135acd9175f908d85316ac..2b4e8a80148a94d1be0a84f849939fdeb81e72f7 100644
--- a/src/server/api/endpoints/admin/moderators/add.ts
+++ b/src/server/api/endpoints/admin/moderators/add.ts
@@ -4,11 +4,6 @@ import define from '../../../define';
 import { Users } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーをモデレーターにします。',
-		'en-US': 'Mark a user as moderator.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -17,10 +12,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID'
-			}
 		},
 	}
 };
diff --git a/src/server/api/endpoints/admin/moderators/remove.ts b/src/server/api/endpoints/admin/moderators/remove.ts
index c9c884092c4e8e1a7c31a0ca58f52e0c057ac4d6..fd6e29df5414f49952754fb5ae3812d1b0d55dea 100644
--- a/src/server/api/endpoints/admin/moderators/remove.ts
+++ b/src/server/api/endpoints/admin/moderators/remove.ts
@@ -4,11 +4,6 @@ import define from '../../../define';
 import { Users } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーをモデレーター解除します。',
-		'en-US': 'Unmark a user as moderator.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -17,10 +12,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID'
-			}
 		},
 	}
 };
diff --git a/src/server/api/endpoints/admin/promo/create.ts b/src/server/api/endpoints/admin/promo/create.ts
index 3ee1616145f1d0b49a2d2ed498120b8151041172..8468ab6545dd66f857ad9665ccca89b3615519f1 100644
--- a/src/server/api/endpoints/admin/promo/create.ts
+++ b/src/server/api/endpoints/admin/promo/create.ts
@@ -6,11 +6,6 @@ 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 bc55a02ec1ccda48aed4981e9146f45906393001..0375f55f01871831f636a6a964f1564780be1e6f 100644
--- a/src/server/api/endpoints/admin/queue/clear.ts
+++ b/src/server/api/endpoints/admin/queue/clear.ts
@@ -3,11 +3,6 @@ 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 1de5b060e223e0cbf496660eab61e5c6c31de97b..cd7b6409833df461a62b9adf2701e8d680b1c41b 100644
--- a/src/server/api/endpoints/admin/queue/deliver-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
@@ -3,11 +3,6 @@ import { URL } from 'url';
 import define from '../../../define';
 
 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,
@@ -26,11 +21,9 @@ export const meta = {
 				anyOf: [
 					{
 						type: 'string' as const,
-						description: 'FQDN to fediverse server'
 					},
 					{
 						type: 'number' as const,
-						description: 'Delayed queue counts'
 					}
 				]
 			}
diff --git a/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
index 3599c012a5c7a770815af23effae5a4b49a76d46..119976c6808ce8e5d8af4393a09b5d2014d3f0e3 100644
--- a/src/server/api/endpoints/admin/queue/inbox-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
@@ -3,11 +3,6 @@ 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,
@@ -26,11 +21,9 @@ export const meta = {
 				anyOf: [
 					{
 						type: 'string' as const,
-						description: 'FQDN to fediverse server'
 					},
 					{
 						type: 'number' as const,
-						description: 'Delayed queue counts'
 					}
 				]
 			}
diff --git a/src/server/api/endpoints/admin/queue/jobs.ts b/src/server/api/endpoints/admin/queue/jobs.ts
index ffae1426be546a8fc89df670583229c6807f2d77..c426e5f39b0564235de1f5f26634c9e45e987524 100644
--- a/src/server/api/endpoints/admin/queue/jobs.ts
+++ b/src/server/api/endpoints/admin/queue/jobs.ts
@@ -3,11 +3,6 @@ import $ from 'cafy';
 import define from '../../../define';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ジョブ一覧を表示します。',
-		'en-US': 'Display the job list.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/queue/stats.ts b/src/server/api/endpoints/admin/queue/stats.ts
index cc1cf8a9e076ca3999760f7c5079e29b9c5c07db..38f18459ddb19a635a2b57a9d865444222626b1f 100644
--- a/src/server/api/endpoints/admin/queue/stats.ts
+++ b/src/server/api/endpoints/admin/queue/stats.ts
@@ -2,11 +2,6 @@ import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '@/queue/q
 import define from '../../../define';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'キューの状態を返します。',
-		'en-US': 'Returns the status of the queue.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/relays/add.ts b/src/server/api/endpoints/admin/relays/add.ts
index e10bd92c8d8c0c021af019bb0dc6fcd8a454a520..54d292ad55d13a80a8690a9da67c92597c5f291a 100644
--- a/src/server/api/endpoints/admin/relays/add.ts
+++ b/src/server/api/endpoints/admin/relays/add.ts
@@ -5,11 +5,6 @@ import { addRelay } from '../../../../../services/relay';
 import { ApiError } from '../../../error';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'リレーを追加します。',
-		'en-US': 'Add relay'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/relays/list.ts b/src/server/api/endpoints/admin/relays/list.ts
index da05ac0a24e82eabc0a9e11274bb6e3a95115e56..9f2474f10c04a9eecc85b2585d536a18cc78456b 100644
--- a/src/server/api/endpoints/admin/relays/list.ts
+++ b/src/server/api/endpoints/admin/relays/list.ts
@@ -2,11 +2,6 @@ import define from '../../../define';
 import { listRelay } from '../../../../../services/relay';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'リレー一覧を表示します。',
-		'en-US': 'List relay'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/relays/remove.ts b/src/server/api/endpoints/admin/relays/remove.ts
index 572d51cfca0fd0b4c0395d53beb166fffa83cf46..220efab40606a7cc7b070d6c39260ce58b3f2d08 100644
--- a/src/server/api/endpoints/admin/relays/remove.ts
+++ b/src/server/api/endpoints/admin/relays/remove.ts
@@ -3,11 +3,6 @@ import define from '../../../define';
 import { removeRelay } from '../../../../../services/relay';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'リレーを削除します。',
-		'en-US': 'Remove relay'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/reset-password.ts b/src/server/api/endpoints/admin/reset-password.ts
index a316ef9c1d149822c8355247f4564f08b6e20ad8..6ff49d83d5e01797d2d2d48e4d6b2829098cb2c9 100644
--- a/src/server/api/endpoints/admin/reset-password.ts
+++ b/src/server/api/endpoints/admin/reset-password.ts
@@ -6,11 +6,6 @@ import rndstr from 'rndstr';
 import { Users, UserProfiles } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーのパスワードをリセットします。',
-		'en-US': 'Reset password to specified user.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID which you want to suspend'
-			}
 		},
 	},
 
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 144695182814ba52a20f596bfb983c8cfb36a063..38a5e8137561a5fe7fd0209caded706bee3fc7e0 100644
--- a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
+++ b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
@@ -4,11 +4,6 @@ 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 13254a3ca3c1f7450c2de765cdc6969dc663981e..84e19d37e61d1941b12de35ec7ea36dbb9d907be 100644
--- a/src/server/api/endpoints/admin/resync-chart.ts
+++ b/src/server/api/endpoints/admin/resync-chart.ts
@@ -3,11 +3,6 @@ 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 51f92230a29d77c5c7d9a91f5a010172ee56bfec..c0e77e1621e8118e9b0bbf79ad8e551591c648ec 100644
--- a/src/server/api/endpoints/admin/send-email.ts
+++ b/src/server/api/endpoints/admin/send-email.ts
@@ -3,11 +3,6 @@ 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 33e6190974696dd3c8b1d5d84cf4e2779f1c6bd7..bb2d35e397a246ceab33156d03756049ea20f092 100644
--- a/src/server/api/endpoints/admin/server-info.ts
+++ b/src/server/api/endpoints/admin/server-info.ts
@@ -8,11 +8,6 @@ export const meta = {
 	requireCredential: true as const,
 	requireModerator: true,
 
-	desc: {
-		'ja-JP': 'サーバー情報を表示します。',
-		'en-US': 'Show server information.'
-	},
-
 	tags: ['admin', 'meta'],
 
 	params: {
@@ -25,23 +20,19 @@ export const meta = {
 			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,
@@ -50,12 +41,10 @@ export const meta = {
 					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)'
 					}
 				}
 			},
@@ -67,7 +56,6 @@ export const meta = {
 						type: 'number' as const,
 						optional: false as const, nullable: false as const,
 						format: 'bytes',
-						description: 'RAM capacity.'
 					}
 				}
 			},
@@ -79,13 +67,11 @@ export const meta = {
 						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'
 					}
 				}
 			},
@@ -96,7 +82,6 @@ export const meta = {
 					interface: {
 						type: 'string' as const,
 						optional: false as const, nullable: false as const,
-						description: 'The interface name of your network.',
 						example: 'eth0'
 					}
 				}
diff --git a/src/server/api/endpoints/admin/show-moderation-logs.ts b/src/server/api/endpoints/admin/show-moderation-logs.ts
index 59e6f0033dd42940d82138a921d1a422f645fc88..cfceab94635ace0e74958ef88907b9ed4d7da06c 100644
--- a/src/server/api/endpoints/admin/show-moderation-logs.ts
+++ b/src/server/api/endpoints/admin/show-moderation-logs.ts
@@ -5,11 +5,6 @@ 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,
diff --git a/src/server/api/endpoints/admin/show-user.ts b/src/server/api/endpoints/admin/show-user.ts
index 52c4458c35a1f6b39ab1f4d309fd57cc51c419cd..b1132ac207b8a0ceac2bbab0ae6a2d86f02f618c 100644
--- a/src/server/api/endpoints/admin/show-user.ts
+++ b/src/server/api/endpoints/admin/show-user.ts
@@ -4,11 +4,6 @@ import define from '../../define';
 import { Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーの情報を取得します(管理者向け)。',
-		'en-US': 'Gets the information of the specified user (for administrators).'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -17,10 +12,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID which you want to suspend'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts
index 6ee4aa877b1030c228e0499bcf96f3be498aa42e..7ea0e0e8648f3777c993e5dea3dac64f20df4b4e 100644
--- a/src/server/api/endpoints/admin/show-users.ts
+++ b/src/server/api/endpoints/admin/show-users.ts
@@ -3,11 +3,6 @@ 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,
diff --git a/src/server/api/endpoints/admin/silence-user.ts b/src/server/api/endpoints/admin/silence-user.ts
index d057459824acfe2674b2edc52dda26be2ef9805a..73f9d03b7028588554fef678d47ed7e24b983a5d 100644
--- a/src/server/api/endpoints/admin/silence-user.ts
+++ b/src/server/api/endpoints/admin/silence-user.ts
@@ -5,11 +5,6 @@ import { Users } from '../../../../models';
 import { insertModerationLog } from '../../../../services/insert-moderation-log';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーをサイレンスにします。',
-		'en-US': 'Make silence a user.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -18,10 +13,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID which you want to make silence'
-			}
 		},
 	}
 };
diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts
index a4485445c9cb292359868f4e9c3e0ba7643e220b..9f3c8eb6f818121d463e9aebce236ceaf3776cf1 100644
--- a/src/server/api/endpoints/admin/suspend-user.ts
+++ b/src/server/api/endpoints/admin/suspend-user.ts
@@ -8,11 +8,6 @@ import { insertModerationLog } from '../../../../services/insert-moderation-log'
 import { doPostSuspend } from '../../../../services/suspend-user';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーを凍結します。',
-		'en-US': 'Suspend a user.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -21,10 +16,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID which you want to suspend'
-			}
 		},
 	}
 };
diff --git a/src/server/api/endpoints/admin/unsilence-user.ts b/src/server/api/endpoints/admin/unsilence-user.ts
index c811ae5d1c78072336893b28db3361b2f65ebfd0..6083d87afcdf16c3d848eafac973ab3c722e82ac 100644
--- a/src/server/api/endpoints/admin/unsilence-user.ts
+++ b/src/server/api/endpoints/admin/unsilence-user.ts
@@ -5,11 +5,6 @@ import { Users } from '../../../../models';
 import { insertModerationLog } from '../../../../services/insert-moderation-log';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーのサイレンスを解除します。',
-		'en-US': 'Unsilence a user.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -18,10 +13,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID which you want to unsilence'
-			}
 		},
 	}
 };
diff --git a/src/server/api/endpoints/admin/unsuspend-user.ts b/src/server/api/endpoints/admin/unsuspend-user.ts
index 7658d37f8b254c8385d1c8f1c781dac415f7dad0..6d015b51ab16e78fb47c4d2016f5899977e37e9f 100644
--- a/src/server/api/endpoints/admin/unsuspend-user.ts
+++ b/src/server/api/endpoints/admin/unsuspend-user.ts
@@ -6,11 +6,6 @@ import { insertModerationLog } from '../../../../services/insert-moderation-log'
 import { doPostUnsuspend } from '../../../../services/unsuspend-user';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーの凍結を解除します。',
-		'en-US': 'Unsuspend a user.'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID which you want to unsuspend'
-			}
 		},
 	}
 };
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index d9ce7c061c83e9a94a567cfd1bfd3de4e2a85eea..a18956b3f7fd7cf58be66609621196a06a108b57 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -7,10 +7,6 @@ import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
 import { ID } from '@/misc/cafy-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'インスタンスの設定を更新します。'
-	},
-
 	tags: ['admin'],
 
 	requireCredential: true as const,
@@ -19,79 +15,46 @@ export const meta = {
 	params: {
 		disableRegistration: {
 			validator: $.optional.nullable.bool,
-			desc: {
-				'ja-JP': '招待制か否か'
-			}
 		},
 
 		disableLocalTimeline: {
 			validator: $.optional.nullable.bool,
-			desc: {
-				'ja-JP': 'ローカルタイムライン(とソーシャルタイムライン)を無効にするか否か'
-			}
 		},
 
 		disableGlobalTimeline: {
 			validator: $.optional.nullable.bool,
-			desc: {
-				'ja-JP': 'グローバルタイムラインを無効にするか否か'
-			}
 		},
 
 		useStarForReactionFallback: {
 			validator: $.optional.nullable.bool,
-			desc: {
-				'ja-JP': '不明なリアクションのフォールバックに star リアクションを使うか'
-			}
 		},
 
 		pinnedUsers: {
 			validator: $.optional.nullable.arr($.str),
-			desc: {
-				'ja-JP': 'ピン留めユーザー'
-			}
 		},
 
 		hiddenTags: {
 			validator: $.optional.nullable.arr($.str),
-			desc: {
-				'ja-JP': '統計などで無視するハッシュタグ'
-			}
 		},
 
 		blockedHosts: {
 			validator: $.optional.nullable.arr($.str),
-			desc: {
-				'ja-JP': 'ブロックするホスト'
-			}
 		},
 
 		mascotImageUrl: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'インスタンスキャラクター画像のURL'
-			}
 		},
 
 		bannerUrl: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'インスタンスのバナー画像URL'
-			}
 		},
 
 		errorImageUrl: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'インスタンスのエラー画像URL'
-			}
 		},
 
 		iconUrl: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'インスタンスのアイコンURL'
-			}
 		},
 
 		backgroundImageUrl: {
@@ -104,116 +67,66 @@ export const meta = {
 
 		name: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'インスタンス名'
-			}
 		},
 
 		description: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'インスタンスの紹介文'
-			}
 		},
 
 		maxNoteTextLength: {
 			validator: $.optional.num.min(0).max(DB_MAX_NOTE_TEXT_LENGTH),
-			desc: {
-				'ja-JP': '投稿の最大文字数'
-			}
 		},
 
 		localDriveCapacityMb: {
 			validator: $.optional.num.min(0),
-			desc: {
-				'ja-JP': 'ローカルユーザーひとりあたりのドライブ容量 (メガバイト単位)',
-				'en-US': 'Drive capacity of a local user (MB)'
-			}
 		},
 
 		remoteDriveCapacityMb: {
 			validator: $.optional.num.min(0),
-			desc: {
-				'ja-JP': 'リモートユーザーひとりあたりのドライブ容量 (メガバイト単位)',
-				'en-US': 'Drive capacity of a remote user (MB)'
-			}
 		},
 
 		cacheRemoteFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'リモートのファイルをキャッシュするか否か'
-			}
 		},
 
 		proxyRemoteFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'ローカルにないリモートのファイルをプロキシするか否か'
-			}
 		},
 
 		enableHcaptcha: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'hCaptchaを使用するか否か'
-			}
 		},
 
 		hcaptchaSiteKey: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'hCaptcha site key'
-			}
 		},
 
 		hcaptchaSecretKey: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'hCaptcha secret key'
-			}
 		},
 
 		enableRecaptcha: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'reCAPTCHAを使用するか否か'
-			}
 		},
 
 		recaptchaSiteKey: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'reCAPTCHA site key'
-			}
 		},
 
 		recaptchaSecretKey: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'reCAPTCHA secret key'
-			}
 		},
 
 		proxyAccountId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': 'プロキシアカウントのID'
-			}
 		},
 
 		maintainerName: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'インスタンスの管理者名'
-			}
 		},
 
 		maintainerEmail: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'インスタンス管理者の連絡先メールアドレス'
-			}
 		},
 
 		pinnedPages: {
@@ -226,170 +139,98 @@ export const meta = {
 
 		langs: {
 			validator: $.optional.arr($.str),
-			desc: {
-				'ja-JP': 'インスタンスの対象言語'
-			}
 		},
 
 		summalyProxy: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'summalyプロキシURL'
-			}
 		},
 
 		enableTwitterIntegration: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'Twitter連携機能を有効にするか否か'
-			}
 		},
 
 		twitterConsumerKey: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'TwitterアプリのConsumer key'
-			}
 		},
 
 		twitterConsumerSecret: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'TwitterアプリのConsumer secret'
-			}
 		},
 
 		enableGithubIntegration: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'GitHub連携機能を有効にするか否か'
-			}
 		},
 
 		githubClientId: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'GitHubアプリのClient ID'
-			}
 		},
 
 		githubClientSecret: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'GitHubアプリのClient Secret'
-			}
 		},
 
 		enableDiscordIntegration: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'Discord連携機能を有効にするか否か'
-			}
 		},
 
 		discordClientId: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'DiscordアプリのClient ID'
-			}
 		},
 
 		discordClientSecret: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'DiscordアプリのClient Secret'
-			}
 		},
 
 		enableEmail: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'メール配信を有効にするか否か'
-			}
 		},
 
 		email: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'メール配信する際に利用するメールアドレス'
-			}
 		},
 
 		smtpSecure: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'SMTPサーバがSSLを使用しているか否か'
-			}
 		},
 
 		smtpHost: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'SMTPサーバのホスト'
-			}
 		},
 
 		smtpPort: {
 			validator: $.optional.nullable.num,
-			desc: {
-				'ja-JP': 'SMTPサーバのポート'
-			}
 		},
 
 		smtpUser: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'SMTPサーバのユーザー名'
-			}
 		},
 
 		smtpPass: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'SMTPサーバのパスワード'
-			}
 		},
 
 		enableServiceWorker: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'ServiceWorkerを有効にするか否か'
-			}
 		},
 
 		swPublicKey: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'ServiceWorkerのVAPIDキーペアの公開鍵'
-			}
 		},
 
 		swPrivateKey: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'ServiceWorkerのVAPIDキーペアの秘密鍵'
-			}
 		},
 
 		tosUrl: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': '利用規約のURL'
-			}
 		},
 
 		repositoryUrl: {
 			validator: $.optional.str,
-			desc: {
-				'ja-JP': 'リポジトリのURL'
-			}
 		},
 
 		feedbackUrl: {
 			validator: $.optional.str,
-			desc: {
-				'ja-JP': 'フィードバックのURL'
-			}
 		},
 
 		useObjectStorage: {
diff --git a/src/server/api/endpoints/admin/vacuum.ts b/src/server/api/endpoints/admin/vacuum.ts
index 14136c751cc677ea76a1739cdd2acf93cd35719b..e041e6543121798d9f4fa01a40319f1d276830ab 100644
--- a/src/server/api/endpoints/admin/vacuum.ts
+++ b/src/server/api/endpoints/admin/vacuum.ts
@@ -4,11 +4,6 @@ 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 a7c477bc7cbdc7f979e50507a59d365ad0487e8d..124682909ca38bbd852b6343064689e1d70d31b6 100644
--- a/src/server/api/endpoints/announcements.ts
+++ b/src/server/api/endpoints/announcements.ts
@@ -5,11 +5,6 @@ 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,
@@ -45,40 +40,33 @@ export const meta = {
 					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 04ca21bba7f393d106664c3a09f75483e30ca91f..bff3c09f1cb3ab90ac6e4d002a0e3d23fdd3569d 100644
--- a/src/server/api/endpoints/antennas/create.ts
+++ b/src/server/api/endpoints/antennas/create.ts
@@ -7,11 +7,6 @@ import { ApiError } from '../../error';
 import { publishInternalEvent } from '../../../../services/stream';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'アンテナを作成します。',
-		'en-US': 'Create a antenna.'
-	},
-
 	tags: ['antennas'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/antennas/delete.ts b/src/server/api/endpoints/antennas/delete.ts
index 5d617bb5b5746798a8a6ce3aed8cf3877dc257a9..10a212897b8685d8075481151e936246541ec6ea 100644
--- a/src/server/api/endpoints/antennas/delete.ts
+++ b/src/server/api/endpoints/antennas/delete.ts
@@ -6,11 +6,6 @@ import { Antennas } from '../../../../models';
 import { publishInternalEvent } from '../../../../services/stream';
 
 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 bc9685887fe48292030d9be084b49d8deaf3647e..6ae3c0cbb2e1d17117b28dc8e6be205d03df5ce0 100644
--- a/src/server/api/endpoints/antennas/list.ts
+++ b/src/server/api/endpoints/antennas/list.ts
@@ -2,11 +2,6 @@ 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,
diff --git a/src/server/api/endpoints/antennas/notes.ts b/src/server/api/endpoints/antennas/notes.ts
index 456c1b6e006fc3b366435096a58fd9c95c986c71..a244f7f9b432444348af0c502fcf1b38af04b574 100644
--- a/src/server/api/endpoints/antennas/notes.ts
+++ b/src/server/api/endpoints/antennas/notes.ts
@@ -8,11 +8,6 @@ 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,
diff --git a/src/server/api/endpoints/antennas/show.ts b/src/server/api/endpoints/antennas/show.ts
index af2a28b793c2fb27e61b350e45e091d2985ad631..36045e47a428cb09e9d26795c871a79a1d763c51 100644
--- a/src/server/api/endpoints/antennas/show.ts
+++ b/src/server/api/endpoints/antennas/show.ts
@@ -5,11 +5,6 @@ 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,
diff --git a/src/server/api/endpoints/antennas/update.ts b/src/server/api/endpoints/antennas/update.ts
index 17b0f854f3e1d01a0fe6b4aa67b2d58e889ae137..9194c14795c201642f26eeb4dafd70fdf0452286 100644
--- a/src/server/api/endpoints/antennas/update.ts
+++ b/src/server/api/endpoints/antennas/update.ts
@@ -6,11 +6,6 @@ import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
 import { publishInternalEvent } from '../../../../services/stream';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'アンテナの情報を更新します。',
-		'en-US': 'Updates the information of the specified antenna.'
-	},
-
 	tags: ['antennas'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/ap/get.ts b/src/server/api/endpoints/ap/get.ts
index c889d472bbf52d9147690e882d498896fb010892..f2b4c2408fb568bbed2487c4621124508af74dd9 100644
--- a/src/server/api/endpoints/ap/get.ts
+++ b/src/server/api/endpoints/ap/get.ts
@@ -6,19 +6,11 @@ import { ApiError } from '../../error';
 export const meta = {
 	tags: ['federation'],
 
-	desc: {
-		'ja-JP': 'URIを指定してActivityPubオブジェクトを参照します。',
-		'en-US': 'Browse to the ActivityPub object by specifying the URI.'
-	},
-
 	requireCredential: false as const,
 
 	params: {
 		uri: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'ActivityPubオブジェクトのURI'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/ap/show.ts b/src/server/api/endpoints/ap/show.ts
index b4df1ad4d7710f96a64846718205a3d96c835ce1..7f61055bfacd5ff6a6c63175c640b0e19762af2c 100644
--- a/src/server/api/endpoints/ap/show.ts
+++ b/src/server/api/endpoints/ap/show.ts
@@ -15,19 +15,11 @@ import { isActor, isPost, getApId } from '../../../../remote/activitypub/type';
 export const meta = {
 	tags: ['federation'],
 
-	desc: {
-		'ja-JP': 'URIを指定してActivityPubオブジェクトを参照します。',
-		'en-US': 'Browse to the ActivityPub object by specifying the URI.'
-	},
-
 	requireCredential: false as const,
 
 	params: {
 		uri: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'ActivityPubオブジェクトのURI'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/app/create.ts b/src/server/api/endpoints/app/create.ts
index db72bd1c4233a5872e5533730f36fb6d501149ab..500567bf29066c739f9fe66022386684eb8f93b6 100644
--- a/src/server/api/endpoints/app/create.ts
+++ b/src/server/api/endpoints/app/create.ts
@@ -10,44 +10,23 @@ export const meta = {
 
 	requireCredential: false as const,
 
-	desc: {
-		'ja-JP': 'アプリを作成します。',
-		'en-US': 'Create a application.'
-	},
-
 	params: {
 		name: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'アプリの名前',
-				'en-US': 'Name of application'
-			}
 		},
 
 		description: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'アプリの説明',
-				'en-US': 'Description of application'
-			}
 		},
 
 		permission: {
 			validator: $.arr($.str).unique(),
-			desc: {
-				'ja-JP': 'このアプリに割り当てる権限(権限については"Permissions"を参照)',
-				'en-US': 'Permissions assigned to this app (see "Permissions" for the permissions)'
-			}
 		},
 
 		// TODO: Check it is valid url
 		callbackUrl: {
 			validator: $.optional.nullable.str,
-			default: null as any,
-			desc: {
-				'ja-JP': 'アプリ認証時にコールバックするURL',
-				'en-US': 'URL to call back at app authentication'
-			}
+			default: null,
 		},
 	},
 
diff --git a/src/server/api/endpoints/auth/session/generate.ts b/src/server/api/endpoints/auth/session/generate.ts
index e0d003c49931a90bf5af2ead0a3d499e1b028f09..42f9e25c7867c70fd2f0cd55c5d5268a4dc8a8b7 100644
--- a/src/server/api/endpoints/auth/session/generate.ts
+++ b/src/server/api/endpoints/auth/session/generate.ts
@@ -11,18 +11,9 @@ export const meta = {
 
 	requireCredential: false as const,
 
-	desc: {
-		'ja-JP': 'アプリを認証するためのトークンを作成します。',
-		'en-US': 'Generate a token for authorize application.'
-	},
-
 	params: {
 		appSecret: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'アプリケーションのシークレットキー',
-				'en-US': 'The secret key of your application.'
-			}
 		}
 	},
 
@@ -33,13 +24,11 @@ export const meta = {
 			token: {
 				type: 'string' as const,
 				optional: false as const, nullable: false as const,
-				description: 'セッションのトークン'
 			},
 			url: {
 				type: 'string' as const,
 				optional: false as const, nullable: false as const,
 				format: 'url',
-				description: 'セッションのURL'
 			},
 		}
 	},
diff --git a/src/server/api/endpoints/auth/session/show.ts b/src/server/api/endpoints/auth/session/show.ts
index 9e0d6d90a4ebc42ca8ae1421ad83e12fc1a81ecc..fd20884c029e51c717ec41aa9c5ada96b9bdc8b6 100644
--- a/src/server/api/endpoints/auth/session/show.ts
+++ b/src/server/api/endpoints/auth/session/show.ts
@@ -11,10 +11,6 @@ export const meta = {
 	params: {
 		token: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'セッションのトークン',
-				'en-US': 'The token of a session.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/auth/session/userkey.ts b/src/server/api/endpoints/auth/session/userkey.ts
index 68d0c7bdf1f8c4d04f84ba81a048ad6b6b5a8f5c..7059aacbea6129108a7b393ede4cb61993d825e1 100644
--- a/src/server/api/endpoints/auth/session/userkey.ts
+++ b/src/server/api/endpoints/auth/session/userkey.ts
@@ -11,18 +11,10 @@ export const meta = {
 	params: {
 		appSecret: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'アプリケーションのシークレットキー',
-				'en-US': 'The secret key of your application.'
-			}
 		},
 
 		token: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'セッションのトークン',
-				'en-US': 'The token of a session.'
-			}
 		}
 	},
 
@@ -33,14 +25,12 @@ export const meta = {
 			accessToken: {
 				type: 'string' as const,
 				optional: false as const, nullable: false as const,
-				description: 'ユーザーのアクセストークン',
 			},
 
 			user: {
 				type: 'object' as const,
 				optional: false as const, nullable: false as const,
 				ref: 'User',
-				description: '認証したユーザー'
 			},
 		}
 	},
diff --git a/src/server/api/endpoints/blocking/create.ts b/src/server/api/endpoints/blocking/create.ts
index 60fde8ad78d464f99965d54878c498c2de7f94ba..dd976a7bf1740a8b46508203d2687aec8113f6d6 100644
--- a/src/server/api/endpoints/blocking/create.ts
+++ b/src/server/api/endpoints/blocking/create.ts
@@ -8,11 +8,6 @@ import { getUser } from '../../common/getters';
 import { Blockings, NoteWatchings, Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーをブロックします。',
-		'en-US': 'Block a user.'
-	},
-
 	tags: ['account'],
 
 	limit: {
@@ -27,10 +22,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/blocking/delete.ts b/src/server/api/endpoints/blocking/delete.ts
index 8caa3efc88b4f76a85ab35750997548a48fd346d..c69c8b14a70eafef742b14bf0107112a965d47e5 100644
--- a/src/server/api/endpoints/blocking/delete.ts
+++ b/src/server/api/endpoints/blocking/delete.ts
@@ -8,11 +8,6 @@ import { getUser } from '../../common/getters';
 import { Blockings, Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーのブロックを解除します。',
-		'en-US': 'Unblock a user.'
-	},
-
 	tags: ['account'],
 
 	limit: {
@@ -27,10 +22,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
@@ -57,72 +48,8 @@ export const meta = {
 	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
-							}
-						}
-					}
-				}
-			}
-		}
-	}
+		ref: 'User',
+	},
 };
 
 export default define(meta, async (ps, user) => {
diff --git a/src/server/api/endpoints/blocking/list.ts b/src/server/api/endpoints/blocking/list.ts
index fe8706b5c27350229b3588640bb4451063c84879..db849338ac7340eec2ea5298fce1ddb59ac5553a 100644
--- a/src/server/api/endpoints/blocking/list.ts
+++ b/src/server/api/endpoints/blocking/list.ts
@@ -5,11 +5,6 @@ import { Blockings } from '../../../../models';
 import { makePaginationQuery } from '../../common/make-pagination-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ブロックしているユーザー一覧を取得します。',
-		'en-US': 'Get blocking users.'
-	},
-
 	tags: ['account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/channels/timeline.ts b/src/server/api/endpoints/channels/timeline.ts
index 494221010a017b0a9a89706e6cf835038ed0d36c..9e5ecdeeb3e2a3d1a1be66a60b2ef63b68b76565 100644
--- a/src/server/api/endpoints/channels/timeline.ts
+++ b/src/server/api/endpoints/channels/timeline.ts
@@ -14,45 +14,27 @@ export const meta = {
 	params: {
 		channelId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': 'チャンネルのID'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '最大数'
-			}
 		},
 
 		sinceId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより新しい投稿を取得します'
-			}
 		},
 
 		untilId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより古い投稿を取得します'
-			}
 		},
 
 		sinceDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		untilDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/charts/active-users.ts b/src/server/api/endpoints/charts/active-users.ts
index df427ff4b775505815f16b939636007c6afd50ad..fb177e5c946d3e2549da912ad0e77bd6673029de 100644
--- a/src/server/api/endpoints/charts/active-users.ts
+++ b/src/server/api/endpoints/charts/active-users.ts
@@ -4,26 +4,16 @@ import { convertLog } from '../../../../services/chart/core';
 import { activeUsersChart } from '../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'アクティブユーザーのチャートを取得します。'
-	},
-
 	tags: ['charts', 'users'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
diff --git a/src/server/api/endpoints/charts/drive.ts b/src/server/api/endpoints/charts/drive.ts
index e1f279fa0a059c541e4537f7fbbee4d88977c35f..ba6556c5977691a022ac8c3ebb745bf79cabb53c 100644
--- a/src/server/api/endpoints/charts/drive.ts
+++ b/src/server/api/endpoints/charts/drive.ts
@@ -4,26 +4,16 @@ import { convertLog } from '../../../../services/chart/core';
 import { driveChart } from '../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ドライブのチャートを取得します。'
-	},
-
 	tags: ['charts', 'drive'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
diff --git a/src/server/api/endpoints/charts/federation.ts b/src/server/api/endpoints/charts/federation.ts
index 581e42f30729cde71136d25d2ecd9e0711049178..46eb87ac022924cf4a07a7936ad873febcc182cc 100644
--- a/src/server/api/endpoints/charts/federation.ts
+++ b/src/server/api/endpoints/charts/federation.ts
@@ -4,26 +4,16 @@ import { convertLog } from '../../../../services/chart/core';
 import { federationChart } from '../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'フェデレーションのチャートを取得します。'
-	},
-
 	tags: ['charts'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
diff --git a/src/server/api/endpoints/charts/hashtag.ts b/src/server/api/endpoints/charts/hashtag.ts
index 1aa5c86b3540560283291e82775f13b05cbf55d6..5c2875ddd21b7c5b853c2f8a56cb3d36ba1c571b 100644
--- a/src/server/api/endpoints/charts/hashtag.ts
+++ b/src/server/api/endpoints/charts/hashtag.ts
@@ -4,26 +4,16 @@ import { convertLog } from '../../../../services/chart/core';
 import { hashtagChart } from '../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ハッシュタグごとのチャートを取得します。'
-	},
-
 	tags: ['charts', 'hashtags'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
@@ -33,9 +23,6 @@ export const meta = {
 
 		tag: {
 			validator: $.str,
-			desc: {
-				'ja-JP': '対象のハッシュタグ'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/charts/instance.ts b/src/server/api/endpoints/charts/instance.ts
index f0f85ed71aef2de53c7a7e674e03ea7dc7e90b67..9375992d2161b42563da434bc506b9ec0ff55b4e 100644
--- a/src/server/api/endpoints/charts/instance.ts
+++ b/src/server/api/endpoints/charts/instance.ts
@@ -4,26 +4,16 @@ import { convertLog } from '../../../../services/chart/core';
 import { instanceChart } from '../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'インスタンスごとのチャートを取得します。'
-	},
-
 	tags: ['charts'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
@@ -33,10 +23,6 @@ export const meta = {
 
 		host: {
 			validator: $.str,
-			desc: {
-				'ja-JP': '対象のインスタンスのホスト',
-				'en-US': 'Target instance host'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/charts/network.ts b/src/server/api/endpoints/charts/network.ts
index d1337681a9086b852140a08e9ea6973964074b5f..d1fd404239e3d8dbcd73b78898e63a3a3c8894f6 100644
--- a/src/server/api/endpoints/charts/network.ts
+++ b/src/server/api/endpoints/charts/network.ts
@@ -4,26 +4,16 @@ import { convertLog } from '../../../../services/chart/core';
 import { networkChart } from '../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ネットワークのチャートを取得します。'
-	},
-
 	tags: ['charts'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
diff --git a/src/server/api/endpoints/charts/notes.ts b/src/server/api/endpoints/charts/notes.ts
index 74aa48b36e148bb11ccd90011beed52fe19ea963..7141fe3b0a746dfd2e120146ddaef6683c277267 100644
--- a/src/server/api/endpoints/charts/notes.ts
+++ b/src/server/api/endpoints/charts/notes.ts
@@ -4,26 +4,16 @@ import { convertLog } from '../../../../services/chart/core';
 import { notesChart } from '../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': '投稿のチャートを取得します。'
-	},
-
 	tags: ['charts', 'notes'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
diff --git a/src/server/api/endpoints/charts/user/drive.ts b/src/server/api/endpoints/charts/user/drive.ts
index 7f4218b9246caf411a53cf2616c96ebb6a714523..bacb022c8173f8568ff3ead078b9cfbb83ec9246 100644
--- a/src/server/api/endpoints/charts/user/drive.ts
+++ b/src/server/api/endpoints/charts/user/drive.ts
@@ -5,26 +5,16 @@ import { convertLog } from '../../../../../services/chart/core';
 import { perUserDriveChart } from '../../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーごとのドライブのチャートを取得します。'
-	},
-
 	tags: ['charts', 'drive', 'users'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
@@ -34,10 +24,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/charts/user/following.ts b/src/server/api/endpoints/charts/user/following.ts
index 63eb90a49ad8c69b979fc9eef09e4ae5fb079938..ce41c231bade8a41f312830c3c1dadc1aefc7c0c 100644
--- a/src/server/api/endpoints/charts/user/following.ts
+++ b/src/server/api/endpoints/charts/user/following.ts
@@ -5,26 +5,16 @@ import { convertLog } from '../../../../../services/chart/core';
 import { perUserFollowingChart } from '../../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーごとのフォロー/フォロワーのチャートを取得します。'
-	},
-
 	tags: ['charts', 'users', 'following'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
@@ -34,10 +24,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/charts/user/notes.ts b/src/server/api/endpoints/charts/user/notes.ts
index 87425e3dc8681bd7ea33d6a6e277a434e87e4b36..470b7274bdb3526d0663528826f1635d53b47c83 100644
--- a/src/server/api/endpoints/charts/user/notes.ts
+++ b/src/server/api/endpoints/charts/user/notes.ts
@@ -5,26 +5,16 @@ import { convertLog } from '../../../../../services/chart/core';
 import { perUserNotesChart } from '../../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーごとの投稿のチャートを取得します。'
-	},
-
 	tags: ['charts', 'users', 'notes'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
@@ -34,10 +24,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/charts/user/reactions.ts b/src/server/api/endpoints/charts/user/reactions.ts
index 7ded604ac2e2e9694aa6921bac6a71229ae5b4dd..4ebe4623c0a31aebdef863852edc06c389b323b8 100644
--- a/src/server/api/endpoints/charts/user/reactions.ts
+++ b/src/server/api/endpoints/charts/user/reactions.ts
@@ -5,26 +5,16 @@ import { convertLog } from '../../../../../services/chart/core';
 import { perUserReactionsChart } from '../../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーごとの被リアクション数のチャートを取得します。'
-	},
-
 	tags: ['charts', 'users', 'reactions'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
@@ -34,10 +24,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/charts/users.ts b/src/server/api/endpoints/charts/users.ts
index 18eec384a6c9e2bc11683cf38592333f0f0d4367..4246a18e59b56d38911056ccb72ac42d205f7b72 100644
--- a/src/server/api/endpoints/charts/users.ts
+++ b/src/server/api/endpoints/charts/users.ts
@@ -4,26 +4,16 @@ import { convertLog } from '../../../../services/chart/core';
 import { usersChart } from '../../../../services/chart';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーのチャートを取得します。'
-	},
-
 	tags: ['charts', 'users'],
 
 	params: {
 		span: {
 			validator: $.str.or(['day', 'hour']),
-			desc: {
-				'ja-JP': '集計のスパン (day または hour)'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 500),
 			default: 30,
-			desc: {
-				'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'
-			}
 		},
 
 		offset: {
diff --git a/src/server/api/endpoints/drive.ts b/src/server/api/endpoints/drive.ts
index 0100d4da79f432486aff2186a90c94fb30927839..2feb72ae12e781c83916aed3a858d72b2eda45d5 100644
--- a/src/server/api/endpoints/drive.ts
+++ b/src/server/api/endpoints/drive.ts
@@ -3,11 +3,6 @@ import { fetchMeta } from '@/misc/fetch-meta';
 import { DriveFiles } from '../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ドライブの情報を取得します。',
-		'en-US': 'Get drive information.'
-	},
-
 	tags: ['drive', 'account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/drive/files.ts b/src/server/api/endpoints/drive/files.ts
index 85dc07cc160cefd9241dbd097892364c5e067364..1e821b00855ee8fdd9ef55d98d8b67901e11810e 100644
--- a/src/server/api/endpoints/drive/files.ts
+++ b/src/server/api/endpoints/drive/files.ts
@@ -5,11 +5,6 @@ import { DriveFiles } from '../../../../models';
 import { makePaginationQuery } from '../../common/make-pagination-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ドライブのファイル一覧を取得します。',
-		'en-US': 'Get files of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -32,7 +27,7 @@ export const meta = {
 
 		folderId: {
 			validator: $.optional.nullable.type(ID),
-			default: null as any,
+			default: null,
 		},
 
 		type: {
diff --git a/src/server/api/endpoints/drive/files/attached-notes.ts b/src/server/api/endpoints/drive/files/attached-notes.ts
index ea09581ba9f1e2684971fc93e6954e8c79abb103..dafbf30fbbf4759eaec494f384c99c3753ff8639 100644
--- a/src/server/api/endpoints/drive/files/attached-notes.ts
+++ b/src/server/api/endpoints/drive/files/attached-notes.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../error';
 import { DriveFiles, Notes } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したドライブのファイルが添付されている投稿一覧を取得します。',
-		'en-US': 'Get the notes that specified file of drive attached.'
-	},
-
 	tags: ['drive', 'notes'],
 
 	requireCredential: true as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		fileId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のファイルID',
-				'en-US': 'Target file ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/files/check-existence.ts b/src/server/api/endpoints/drive/files/check-existence.ts
index f1741cf086e5adc1cba238d6ee6af3dcb13faa89..b20be4407216baa8b78a2442240dad6d41e53543 100644
--- a/src/server/api/endpoints/drive/files/check-existence.ts
+++ b/src/server/api/endpoints/drive/files/check-existence.ts
@@ -3,11 +3,6 @@ import define from '../../../define';
 import { DriveFiles } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '与えられたMD5ハッシュ値を持つファイルがドライブに存在するかどうかを返します。',
-		'en-US': 'Returns whether the file with the given MD5 hash exists in the user\'s drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -17,9 +12,6 @@ export const meta = {
 	params: {
 		md5: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'ファイルのMD5ハッシュ'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts
index 82ff04e092cfe2bf804bec4d17557aed04ef1228..a8f6b92014b6c745b201f87fd4f53678c2dc317e 100644
--- a/src/server/api/endpoints/drive/files/create.ts
+++ b/src/server/api/endpoints/drive/files/create.ts
@@ -8,11 +8,6 @@ import { ApiError } from '../../../error';
 import { DriveFiles } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ドライブにファイルをアップロードします。',
-		'en-US': 'Upload a file to drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -29,37 +24,24 @@ export const meta = {
 	params: {
 		folderId: {
 			validator: $.optional.nullable.type(ID),
-			default: null as any,
-			desc: {
-				'ja-JP': 'フォルダID'
-			}
+			default: null,
 		},
 
 		name: {
 			validator: $.optional.nullable.str,
-			default: null as any,
-			desc: {
-				'ja-JP': 'ファイル名(拡張子があるなら含めて)'
-			}
+			default: null,
 		},
 
 		isSensitive: {
 			validator: $.optional.either($.bool, $.str),
 			default: false,
 			transform: (v: any): boolean => v === true || v === 'true',
-			desc: {
-				'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
-				'en-US': 'Whether this media is NSFW'
-			}
 		},
 
 		force: {
 			validator: $.optional.either($.bool, $.str),
 			default: false,
 			transform: (v: any): boolean => v === true || v === 'true',
-			desc: {
-				'ja-JP': 'true にすると、同じハッシュを持つファイルが既にアップロードされていても強制的にファイルを作成します。',
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts
index 211afaaba1c20b14f60c6b7afe3f426215d6cd8a..520078948cfbbac7a8e5eb6c73d8e393f8bd962b 100644
--- a/src/server/api/endpoints/drive/files/delete.ts
+++ b/src/server/api/endpoints/drive/files/delete.ts
@@ -7,11 +7,6 @@ import { ApiError } from '../../../error';
 import { DriveFiles } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ドライブのファイルを削除します。',
-		'en-US': 'Delete a file of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -21,10 +16,6 @@ export const meta = {
 	params: {
 		fileId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のファイルID',
-				'en-US': 'Target file ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/files/find-by-hash.ts b/src/server/api/endpoints/drive/files/find-by-hash.ts
index 336c85c4441195b47b1191087b8a497e11cac853..ef0077392ebd405b0038866f8730475340e3d09f 100644
--- a/src/server/api/endpoints/drive/files/find-by-hash.ts
+++ b/src/server/api/endpoints/drive/files/find-by-hash.ts
@@ -3,10 +3,6 @@ import define from '../../../define';
 import { DriveFiles } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '与えられたMD5ハッシュ値を持つファイルを取得します。',
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -16,9 +12,6 @@ export const meta = {
 	params: {
 		md5: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'ファイルのMD5ハッシュ'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/files/find.ts b/src/server/api/endpoints/drive/files/find.ts
index b3613ca01b18e26168f22c297d818f2309211d66..b7f25714535cf12bcef4a08bd192fef74e451cfe 100644
--- a/src/server/api/endpoints/drive/files/find.ts
+++ b/src/server/api/endpoints/drive/files/find.ts
@@ -17,10 +17,7 @@ export const meta = {
 
 		folderId: {
 			validator: $.optional.nullable.type(ID),
-			default: null as any,
-			desc: {
-				'ja-JP': 'フォルダID'
-			}
+			default: null,
 		},
 	},
 
diff --git a/src/server/api/endpoints/drive/files/show.ts b/src/server/api/endpoints/drive/files/show.ts
index f4922bff1377e2aa40ec447affa0fad7ef0820f5..33e88fa8176ac92d88f2739f33867004616170df 100644
--- a/src/server/api/endpoints/drive/files/show.ts
+++ b/src/server/api/endpoints/drive/files/show.ts
@@ -6,11 +6,6 @@ import { DriveFile } from '../../../../../models/entities/drive-file';
 import { DriveFiles } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したドライブのファイルの情報を取得します。',
-		'en-US': 'Get specified file of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -20,18 +15,10 @@ export const meta = {
 	params: {
 		fileId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のファイルID',
-				'en-US': 'Target file ID'
-			}
 		},
 
 		url: {
 			validator: $.optional.str,
-			desc: {
-				'ja-JP': '対象のファイルのURL',
-				'en-US': 'Target file URL'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index f740fea67e3c6da77ffed2e8efcb37eff57a69c2..29b4ba7a45be55c789f8e673058146fb5d0c91fb 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -6,11 +6,6 @@ import { ApiError } from '../../../error';
 import { DriveFiles, DriveFolders } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したドライブのファイルの情報を更新します。',
-		'en-US': 'Update specified file of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -20,43 +15,26 @@ export const meta = {
 	params: {
 		fileId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のファイルID'
-			}
 		},
 
 		folderId: {
 			validator: $.optional.nullable.type(ID),
 			default: undefined as any,
-			desc: {
-				'ja-JP': 'フォルダID'
-			}
 		},
 
 		name: {
 			validator: $.optional.str.pipe(DriveFiles.validateFileName),
 			default: undefined as any,
-			desc: {
-				'ja-JP': 'ファイル名',
-				'en-US': 'Name of the file'
-			}
 		},
 
 		isSensitive: {
 			validator: $.optional.bool,
 			default: undefined as any,
-			desc: {
-				'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
-				'en-US': 'Whether this media is NSFW'
-			}
 		},
 
 		comment: {
 			validator: $.optional.nullable.str,
 			default: undefined as any,
-			desc: {
-				'ja-JP': 'コメント'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/files/upload-from-url.ts b/src/server/api/endpoints/drive/files/upload-from-url.ts
index 1b33099aa4c8b4a8df66f7074e818d7deb0764f9..8dfc86e660791ea5abd8e9a33df90f40efa5300a 100644
--- a/src/server/api/endpoints/drive/files/upload-from-url.ts
+++ b/src/server/api/endpoints/drive/files/upload-from-url.ts
@@ -7,10 +7,6 @@ import { DriveFiles } from '../../../../../models';
 import { publishMainStream } from '../../../../../services/stream';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ドライブに指定されたURLに存在するファイルをアップロードします。'
-	},
-
 	tags: ['drive'],
 
 	limit: {
@@ -30,34 +26,27 @@ export const meta = {
 
 		folderId: {
 			validator: $.optional.nullable.type(ID),
-			default: null as any,
+			default: null,
 		},
 
 		isSensitive: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
-				'en-US': 'Whether this media is NSFW'
-			}
 		},
 
 		comment: {
 			validator: $.optional.nullable.str,
-			default: null as any,
+			default: null,
 		},
 
 		marker: {
 			validator: $.optional.nullable.str,
-			default: null as any,
+			default: null,
 		},
 
 		force: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': 'true にすると、同じハッシュを持つファイルが既にアップロードされていても強制的にファイルを作成します。',
-			}
 		}
 	}
 };
diff --git a/src/server/api/endpoints/drive/folders.ts b/src/server/api/endpoints/drive/folders.ts
index 89453e6e09977ed4a9024d2b19ec02fab04423df..c446d546cc1c59f976486d64c46f48a3dbbac919 100644
--- a/src/server/api/endpoints/drive/folders.ts
+++ b/src/server/api/endpoints/drive/folders.ts
@@ -5,11 +5,6 @@ import { DriveFolders } from '../../../../models';
 import { makePaginationQuery } from '../../common/make-pagination-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ドライブのフォルダ一覧を取得します。',
-		'en-US': 'Get folders of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -32,7 +27,7 @@ export const meta = {
 
 		folderId: {
 			validator: $.optional.nullable.type(ID),
-			default: null as any,
+			default: null,
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/folders/create.ts b/src/server/api/endpoints/drive/folders/create.ts
index d2c5e00a9f4f2d8336d43064111eb929b9a0c1a5..e39f8f2cee8e8772b5bd563f5305caf0d1f59a88 100644
--- a/src/server/api/endpoints/drive/folders/create.ts
+++ b/src/server/api/endpoints/drive/folders/create.ts
@@ -7,11 +7,6 @@ import { DriveFolders } from '../../../../../models';
 import { genId } from '@/misc/gen-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ドライブのフォルダを作成します。',
-		'en-US': 'Create a folder of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -22,18 +17,10 @@ export const meta = {
 		name: {
 			validator: $.optional.str.pipe(DriveFolders.validateFolderName),
 			default: 'Untitled',
-			desc: {
-				'ja-JP': 'フォルダ名',
-				'en-US': 'Folder name'
-			}
 		},
 
 		parentId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': '親フォルダID',
-				'en-US': 'Parent folder ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/folders/delete.ts b/src/server/api/endpoints/drive/folders/delete.ts
index 2a418069c9e1da296bd67533a13a438186af5a7c..253563a3ef248ba0a544e2293b6c24e1499df99d 100644
--- a/src/server/api/endpoints/drive/folders/delete.ts
+++ b/src/server/api/endpoints/drive/folders/delete.ts
@@ -6,11 +6,6 @@ import { ApiError } from '../../../error';
 import { DriveFolders, DriveFiles } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したドライブのフォルダを削除します。',
-		'en-US': 'Delete specified folder of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		folderId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のフォルダID',
-				'en-US': 'Target folder ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/folders/find.ts b/src/server/api/endpoints/drive/folders/find.ts
index e3f6aa4a91201b7522c5d673b50771d359bd09b8..c8e7639e634c93a12f2effbf39c960f79c0ecd3a 100644
--- a/src/server/api/endpoints/drive/folders/find.ts
+++ b/src/server/api/endpoints/drive/folders/find.ts
@@ -17,10 +17,7 @@ export const meta = {
 
 		parentId: {
 			validator: $.optional.nullable.type(ID),
-			default: null as any,
-			desc: {
-				'ja-JP': 'フォルダID'
-			}
+			default: null,
 		},
 	},
 
diff --git a/src/server/api/endpoints/drive/folders/show.ts b/src/server/api/endpoints/drive/folders/show.ts
index ae00b9e36767ded03fcf166eef3979d11cb21a74..fe1326da7584b1fff0737df53595b71ab39a4fe1 100644
--- a/src/server/api/endpoints/drive/folders/show.ts
+++ b/src/server/api/endpoints/drive/folders/show.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../error';
 import { DriveFolders } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したドライブのフォルダの情報を取得します。',
-		'en-US': 'Get specified folder of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		folderId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のフォルダID',
-				'en-US': 'Target folder ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/drive/folders/update.ts b/src/server/api/endpoints/drive/folders/update.ts
index 066013287c4ee5a10a5eb58366ebc82878fdd9db..9dfe33517ecf85f8d9a994d55f9ec530fd929cc9 100644
--- a/src/server/api/endpoints/drive/folders/update.ts
+++ b/src/server/api/endpoints/drive/folders/update.ts
@@ -6,11 +6,6 @@ import { ApiError } from '../../../error';
 import { DriveFolders } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したドライブのフォルダの情報を更新します。',
-		'en-US': 'Update specified folder of drive.'
-	},
-
 	tags: ['drive'],
 
 	requireCredential: true as const,
@@ -20,26 +15,14 @@ export const meta = {
 	params: {
 		folderId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のフォルダID',
-				'en-US': 'Target folder ID'
-			}
 		},
 
 		name: {
 			validator: $.optional.str.pipe(DriveFolders.validateFolderName),
-			desc: {
-				'ja-JP': 'フォルダ名',
-				'en-US': 'Folder name'
-			}
 		},
 
 		parentId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': '親フォルダID',
-				'en-US': 'Parent folder ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/endpoints.ts b/src/server/api/endpoints/endpoints.ts
index 84ab107c6a623ce37b97bd591a340601f43fe12b..f7b9757d8d167732dbefed700e9d437f5af1211e 100644
--- a/src/server/api/endpoints/endpoints.ts
+++ b/src/server/api/endpoints/endpoints.ts
@@ -2,11 +2,6 @@ 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'],
diff --git a/src/server/api/endpoints/federation/update-remote-user.ts b/src/server/api/endpoints/federation/update-remote-user.ts
index 1b7a9c4d5b9646bf8ea914de28143272f657ccdb..c4a6db0dd223b19f1c851b1760101ef95a94c9f1 100644
--- a/src/server/api/endpoints/federation/update-remote-user.ts
+++ b/src/server/api/endpoints/federation/update-remote-user.ts
@@ -5,11 +5,6 @@ import { getRemoteUser } from '../../common/getters';
 import { updatePerson } from '../../../../remote/activitypub/models/person';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定されたリモートユーザーの情報を更新します。',
-		'en-US': 'Update specified remote user information.'
-	},
-
 	tags: ['federation'],
 
 	requireCredential: true as const,
@@ -17,10 +12,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーID',
-				'en-US': 'The user ID which you want to update'
-			}
 		},
 	}
 };
diff --git a/src/server/api/endpoints/following/create.ts b/src/server/api/endpoints/following/create.ts
index 6ce71089b5a1082e50ee101a3208c446627560c9..e4f9a86d9924c8404499ecf87d71325d29cf48c2 100644
--- a/src/server/api/endpoints/following/create.ts
+++ b/src/server/api/endpoints/following/create.ts
@@ -8,11 +8,6 @@ import { getUser } from '../../common/getters';
 import { Followings, Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーをフォローします。',
-		'en-US': 'Follow a user.'
-	},
-
 	tags: ['following', 'users'],
 
 	limit: {
@@ -27,10 +22,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/following/delete.ts b/src/server/api/endpoints/following/delete.ts
index 823d85c1707480b98b206a0b850cd1e37c53a474..e164cb25c9085be3113ed1b2facd017cbafe7ac9 100644
--- a/src/server/api/endpoints/following/delete.ts
+++ b/src/server/api/endpoints/following/delete.ts
@@ -8,11 +8,6 @@ import { getUser } from '../../common/getters';
 import { Followings, Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーのフォローを解除します。',
-		'en-US': 'Unfollow a user.'
-	},
-
 	tags: ['following', 'users'],
 
 	limit: {
@@ -27,10 +22,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/following/requests/accept.ts b/src/server/api/endpoints/following/requests/accept.ts
index 4a0fdb0af96935e0463ff9319688ebd7cfded7b9..aa7085c53facb79da9a1c0c31f1e6d05fceee73b 100644
--- a/src/server/api/endpoints/following/requests/accept.ts
+++ b/src/server/api/endpoints/following/requests/accept.ts
@@ -6,11 +6,6 @@ import { ApiError } from '../../../error';
 import { getUser } from '../../../common/getters';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分に届いた、指定したフォローリクエストを承認します。',
-		'en-US': 'Accept a follow request.'
-	},
-
 	tags: ['following', 'account'],
 
 	requireCredential: true as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/following/requests/cancel.ts b/src/server/api/endpoints/following/requests/cancel.ts
index 8d4538d43e0738180ee956554f93e6ad9563a362..09056f26206ef82872ef9e739623f6c7b38d886a 100644
--- a/src/server/api/endpoints/following/requests/cancel.ts
+++ b/src/server/api/endpoints/following/requests/cancel.ts
@@ -7,11 +7,6 @@ import { getUser } from '../../../common/getters';
 import { Users } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分が作成した、指定したフォローリクエストをキャンセルします。',
-		'en-US': 'Cancel a follow request.'
-	},
-
 	tags: ['following', 'account'],
 
 	requireCredential: true as const,
@@ -21,10 +16,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/following/requests/list.ts b/src/server/api/endpoints/following/requests/list.ts
index 4afd448516ffb298c457ce57fc243146bad1d2c3..bf3bfc68fad67845578e4143c133f6eccfa96dd0 100644
--- a/src/server/api/endpoints/following/requests/list.ts
+++ b/src/server/api/endpoints/following/requests/list.ts
@@ -2,11 +2,6 @@ import define from '../../../define';
 import { FollowRequests } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分に届いたフォローリクエストの一覧を取得します。',
-		'en-US': 'Get all pending received follow requests.'
-	},
-
 	tags: ['following', 'account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/following/requests/reject.ts b/src/server/api/endpoints/following/requests/reject.ts
index 8ef2c9334161dfff472eec08ec707beb005d57bc..1685a86137b160d8da05117cf3cd0a06e2478ef7 100644
--- a/src/server/api/endpoints/following/requests/reject.ts
+++ b/src/server/api/endpoints/following/requests/reject.ts
@@ -6,11 +6,6 @@ import { ApiError } from '../../../error';
 import { getUser } from '../../../common/getters';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分に届いた、指定したフォローリクエストを拒否します。',
-		'en-US': 'Reject a follow request.'
-	},
-
 	tags: ['following', 'account'],
 
 	requireCredential: true as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/games/reversi/games/surrender.ts b/src/server/api/endpoints/games/reversi/games/surrender.ts
index 346293f11d6e1dd1d40f39d9078d15e2c3e02f2a..41896b4ab54be86a6ad10addf573c3198ef35c66 100644
--- a/src/server/api/endpoints/games/reversi/games/surrender.ts
+++ b/src/server/api/endpoints/games/reversi/games/surrender.ts
@@ -8,18 +8,11 @@ import { ReversiGames } from '../../../../../../models';
 export const meta = {
 	tags: ['games'],
 
-	desc: {
-		'ja-JP': '指定したリバーシの対局で投了します。'
-	},
-
 	requireCredential: true as const,
 
 	params: {
 		gameId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '投了したい対局'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/games/reversi/match.ts b/src/server/api/endpoints/games/reversi/match.ts
index 2c4ec2ebd8a7d951a55865fd4362e9b78a39b2db..55ff9225d9bef9adc71928e31d2c7f2272baa7f8 100644
--- a/src/server/api/endpoints/games/reversi/match.ts
+++ b/src/server/api/endpoints/games/reversi/match.ts
@@ -18,10 +18,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/hashtags/search.ts b/src/server/api/endpoints/hashtags/search.ts
index 32342a63dcf437d72b79ea478327c3fa9604b82c..372ccd50845d9ab29ba1c171f1ab6b94a9a089a6 100644
--- a/src/server/api/endpoints/hashtags/search.ts
+++ b/src/server/api/endpoints/hashtags/search.ts
@@ -3,10 +3,6 @@ import define from '../../define';
 import { Hashtags } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ハッシュタグを検索します。'
-	},
-
 	tags: ['hashtags'],
 
 	requireCredential: false as const,
@@ -15,24 +11,15 @@ export const meta = {
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '最大数'
-			}
 		},
 
 		query: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'クエリ'
-			}
 		},
 
 		offset: {
 			validator: $.optional.num.min(0),
 			default: 0,
-			desc: {
-				'ja-JP': 'オフセット'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/hashtags/show.ts b/src/server/api/endpoints/hashtags/show.ts
index f80ef38af09c4b089b6738194640b3d30d388e4d..9e388ce145abc36452b0bc84e2d8b58bc4d9a26d 100644
--- a/src/server/api/endpoints/hashtags/show.ts
+++ b/src/server/api/endpoints/hashtags/show.ts
@@ -5,10 +5,6 @@ import { Hashtags } from '../../../../models';
 import { normalizeForSearch } from '@/misc/normalize-for-search';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したハッシュタグの情報を取得します。',
-	},
-
 	tags: ['hashtags'],
 
 	requireCredential: false as const,
@@ -16,10 +12,6 @@ export const meta = {
 	params: {
 		tag: {
 			validator: $.str,
-			desc: {
-				'ja-JP': '対象のハッシュタグ(#なし)',
-				'en-US': 'Target hashtag. (no # prefixed)'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/i.ts b/src/server/api/endpoints/i.ts
index 87f6ae778daeb8e460ab83deb8b80b668e2b7286..c6b89124b64a1b0c68a7417b7b33d17f4dc53309 100644
--- a/src/server/api/endpoints/i.ts
+++ b/src/server/api/endpoints/i.ts
@@ -2,10 +2,6 @@ import define from '../define';
 import { Users } from '../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分のアカウント情報を取得します。'
-	},
-
 	tags: ['account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/favorites.ts b/src/server/api/endpoints/i/favorites.ts
index b0d20e9ac9fa6c7ca00fd1880a730b5a615351fd..eb97e8bab649311c4fac42d71794166a6bbbed4d 100644
--- a/src/server/api/endpoints/i/favorites.ts
+++ b/src/server/api/endpoints/i/favorites.ts
@@ -5,11 +5,6 @@ import { NoteFavorites } from '../../../../models';
 import { makePaginationQuery } from '../../common/make-pagination-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'お気に入りに登録した投稿一覧を取得します。',
-		'en-US': 'Get favorited notes'
-	},
-
 	tags: ['account', 'notes', 'favorites'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/notifications.ts b/src/server/api/endpoints/i/notifications.ts
index a10dc09df395806a78c348e4160f503b4458701a..a16766c92e9a2cfdd6644c37aa870c244cb5363a 100644
--- a/src/server/api/endpoints/i/notifications.ts
+++ b/src/server/api/endpoints/i/notifications.ts
@@ -8,11 +8,6 @@ import { notificationTypes } from '../../../../types';
 import read from '@/services/note/read';
 
 export const meta = {
-	desc: {
-		'ja-JP': '通知一覧を取得します。',
-		'en-US': 'Get notifications.'
-	},
-
 	tags: ['account', 'notifications'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/page-likes.ts b/src/server/api/endpoints/i/page-likes.ts
index cd5ec3da7066fa849c977f43a51db056aebab024..bb4149969482fbb7c0b3d9378bfe391bfb28f950 100644
--- a/src/server/api/endpoints/i/page-likes.ts
+++ b/src/server/api/endpoints/i/page-likes.ts
@@ -5,11 +5,6 @@ import { PageLikes } from '../../../../models';
 import { makePaginationQuery } from '../../common/make-pagination-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': '「いいね」したページ一覧を取得します。',
-		'en-US': 'Get liked pages'
-	},
-
 	tags: ['account', 'pages'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/pages.ts b/src/server/api/endpoints/i/pages.ts
index ab42ab6d3f37068631904fcf83cd3714c9ad08f5..981686adb04164d71c507daf7555c785785e5967 100644
--- a/src/server/api/endpoints/i/pages.ts
+++ b/src/server/api/endpoints/i/pages.ts
@@ -5,11 +5,6 @@ import { Pages } from '../../../../models';
 import { makePaginationQuery } from '../../common/make-pagination-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分の作成したページ一覧を取得します。',
-		'en-US': 'Get my pages.'
-	},
-
 	tags: ['account', 'pages'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/pin.ts b/src/server/api/endpoints/i/pin.ts
index 4bed566935e54ee1ae686771754743469db4a15c..e1e0658996a440d9f729c7c53d3522fb41aa2417 100644
--- a/src/server/api/endpoints/i/pin.ts
+++ b/src/server/api/endpoints/i/pin.ts
@@ -6,10 +6,6 @@ import { ApiError } from '../../error';
 import { Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿をピン留めします。'
-	},
-
 	tags: ['account', 'notes'],
 
 	requireCredential: true as const,
@@ -19,10 +15,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/i/read-all-messaging-messages.ts b/src/server/api/endpoints/i/read-all-messaging-messages.ts
index e47ef16bd90afe600e4476e8598d58e8f064d7aa..dd26a10a73380b0b033e63cac4b22697167d7434 100644
--- a/src/server/api/endpoints/i/read-all-messaging-messages.ts
+++ b/src/server/api/endpoints/i/read-all-messaging-messages.ts
@@ -3,11 +3,6 @@ import define from '../../define';
 import { MessagingMessages, UserGroupJoinings } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'トークメッセージをすべて既読にします。',
-		'en-US': 'Mark all talk messages as read.'
-	},
-
 	tags: ['account', 'messaging'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/read-all-unread-notes.ts b/src/server/api/endpoints/i/read-all-unread-notes.ts
index efb8a7f0f8128c21779e3d7ec8cdb62233b65db5..64469a2ad504322857fa20fd5b4cf576412cc750 100644
--- a/src/server/api/endpoints/i/read-all-unread-notes.ts
+++ b/src/server/api/endpoints/i/read-all-unread-notes.ts
@@ -3,11 +3,6 @@ import define from '../../define';
 import { NoteUnreads } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '未読の投稿をすべて既読にします。',
-		'en-US': 'Mark all messages as read.'
-	},
-
 	tags: ['account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/read-announcement.ts b/src/server/api/endpoints/i/read-announcement.ts
index a0c59a15d68167d109be0ddf1b8fb7f58a806668..0f58b823fcc58fb966e24f9ab80b72324911f7b8 100644
--- a/src/server/api/endpoints/i/read-announcement.ts
+++ b/src/server/api/endpoints/i/read-announcement.ts
@@ -7,11 +7,6 @@ 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 bb8b36a166c64a9d18149fc86015e39aa33cbc0e..fe19b20905634ba1220fecca2c31dde0bfadabea 100644
--- a/src/server/api/endpoints/i/unpin.ts
+++ b/src/server/api/endpoints/i/unpin.ts
@@ -6,10 +6,6 @@ import { ApiError } from '../../error';
 import { Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿のピン留めを解除します。'
-	},
-
 	tags: ['account', 'notes'],
 
 	requireCredential: true as const,
@@ -19,10 +15,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 032dccd91a9eff8c17cca1b3b9a85c3035a45524..96955354a3a569b96b75abc9944f74085895dc28 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -17,11 +17,6 @@ import { notificationTypes } from '../../../../types';
 import { normalizeForSearch } from '@/misc/normalize-for-search';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'アカウント情報を更新します。',
-		'en-US': 'Update myself'
-	},
-
 	tags: ['account'],
 
 	requireCredential: true as const,
@@ -31,65 +26,38 @@ export const meta = {
 	params: {
 		name: {
 			validator: $.optional.nullable.use(Users.validateName),
-			desc: {
-				'ja-JP': '名前(ハンドルネームやニックネーム)'
-			}
 		},
 
 		description: {
 			validator: $.optional.nullable.use(Users.validateDescription),
-			desc: {
-				'ja-JP': 'アカウントの説明や自己紹介'
-			}
 		},
 
 		lang: {
 			validator: $.optional.nullable.str.or(Object.keys(langmap)),
-			desc: {
-				'ja-JP': '言語'
-			}
 		},
 
 		location: {
 			validator: $.optional.nullable.use(Users.validateLocation),
-			desc: {
-				'ja-JP': '住んでいる地域、所在'
-			}
 		},
 
 		birthday: {
 			validator: $.optional.nullable.use(Users.validateBirthday),
-			desc: {
-				'ja-JP': '誕生日 (YYYY-MM-DD形式)'
-			}
 		},
 
 		avatarId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': 'アバターに設定する画像のドライブファイルID'
-			}
 		},
 
 		bannerId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': 'バナーに設定する画像のドライブファイルID'
-			}
 		},
 
 		fields: {
 			validator: $.optional.arr($.object()).range(1, 4),
-			desc: {
-				'ja-JP': 'プロフィール補足情報'
-			}
 		},
 
 		isLocked: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': '鍵アカウントか否か'
-			}
 		},
 
 		isExplorable: {
@@ -102,37 +70,22 @@ export const meta = {
 
 		carefulBot: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'Botからのフォローを承認制にするか'
-			}
 		},
 
 		autoAcceptFollowed: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'フォローしているユーザーからのフォローリクエストを自動承認するか'
-			}
 		},
 
 		noCrawle: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': '検索エンジンによるインデックスを拒否するか否か'
-			}
 		},
 
 		isBot: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'Botか否か'
-			}
 		},
 
 		isCat: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': '猫か否か'
-			}
 		},
 
 		injectFeaturedNote: {
@@ -145,16 +98,10 @@ export const meta = {
 
 		alwaysMarkNsfw: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'アップロードするメディアをデフォルトで「閲覧注意」として設定するか'
-			}
 		},
 
 		pinnedPageId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': 'ピン留めするページID'
-			}
 		},
 
 		mutedWords: {
diff --git a/src/server/api/endpoints/i/user-group-invites.ts b/src/server/api/endpoints/i/user-group-invites.ts
index 9bfb17ab4e7fa4ccbcded683093e5378f222010b..623274df92a7190591c50b88b138585e6c1c1005 100644
--- a/src/server/api/endpoints/i/user-group-invites.ts
+++ b/src/server/api/endpoints/i/user-group-invites.ts
@@ -5,11 +5,6 @@ import { UserGroupInvitations } from '../../../../models';
 import { makePaginationQuery } from '../../common/make-pagination-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'グループへの招待一覧を取得します。',
-		'en-US': 'Get user group invitations.'
-	},
-
 	tags: ['account', 'groups'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/messaging/history.ts b/src/server/api/endpoints/messaging/history.ts
index 15302eb35501edf29d00f9043c26edd775800bbe..5f4f02455d2109c0c76e7b9deeec85d630bbe1ad 100644
--- a/src/server/api/endpoints/messaging/history.ts
+++ b/src/server/api/endpoints/messaging/history.ts
@@ -5,11 +5,6 @@ import { MessagingMessages, Mutings, UserGroupJoinings } from '../../../../model
 import { Brackets } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'トークの履歴を取得します。',
-		'en-US': 'Show messaging history.'
-	},
-
 	tags: ['messaging'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/messaging/messages.ts b/src/server/api/endpoints/messaging/messages.ts
index 8beb7e87f059bc53eb0120e977a015dab8cf4a45..087f5a7d62686b9caee9cf56b147bc8b22388b97 100644
--- a/src/server/api/endpoints/messaging/messages.ts
+++ b/src/server/api/endpoints/messaging/messages.ts
@@ -9,11 +9,6 @@ import { Brackets } from 'typeorm';
 import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity } from '../../common/read-messaging-message';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'トークメッセージ一覧を取得します。',
-		'en-US': 'Get messages of messaging.'
-	},
-
 	tags: ['messaging'],
 
 	requireCredential: true as const,
@@ -23,18 +18,10 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		groupId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のグループのID',
-				'en-US': 'Target group ID'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/messaging/messages/create.ts b/src/server/api/endpoints/messaging/messages/create.ts
index c9abb299fdb7dea1059d965de485e87b71b56a5e..1cd50145b3cf22fa1bf38853034bf4e11fa54887 100644
--- a/src/server/api/endpoints/messaging/messages/create.ts
+++ b/src/server/api/endpoints/messaging/messages/create.ts
@@ -9,11 +9,6 @@ import { UserGroup } from '../../../../../models/entities/user-group';
 import { createMessage } from '../../../../../services/messages/create';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'トークメッセージを送信します。',
-		'en-US': 'Create a message of messaging.'
-	},
-
 	tags: ['messaging'],
 
 	requireCredential: true as const,
@@ -23,18 +18,10 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		groupId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のグループのID',
-				'en-US': 'Target group ID'
-			}
 		},
 
 		text: {
diff --git a/src/server/api/endpoints/messaging/messages/delete.ts b/src/server/api/endpoints/messaging/messages/delete.ts
index 128ef0263ec2da858f5b6485662bff3d6c046b81..5e5aa5fd137c85b80fba932911783e121bc80ce5 100644
--- a/src/server/api/endpoints/messaging/messages/delete.ts
+++ b/src/server/api/endpoints/messaging/messages/delete.ts
@@ -7,11 +7,6 @@ import { MessagingMessages } from '../../../../../models';
 import { deleteMessage } from '../../../../../services/messages/delete';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したトークメッセージを削除します。',
-		'en-US': 'Delete a message.'
-	},
-
 	tags: ['messaging'],
 
 	requireCredential: true as const,
@@ -27,10 +22,6 @@ export const meta = {
 	params: {
 		messageId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のメッセージのID',
-				'en-US': 'Target message ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/messaging/messages/read.ts b/src/server/api/endpoints/messaging/messages/read.ts
index c591cb28e0159af825b67e10e757ee905ed8e309..b17927da3f530f3c0f52ce63ca092fa99f086455 100644
--- a/src/server/api/endpoints/messaging/messages/read.ts
+++ b/src/server/api/endpoints/messaging/messages/read.ts
@@ -6,11 +6,6 @@ import { MessagingMessages } from '../../../../../models';
 import { readUserMessagingMessage, readGroupMessagingMessage } from '../../../common/read-messaging-message';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した自分宛てのトークメッセージを既読にします。',
-		'en-US': 'Mark as read a message of messaging.'
-	},
-
 	tags: ['messaging'],
 
 	requireCredential: true as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		messageId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '既読にするメッセージのID',
-				'en-US': 'The ID of a message that you want to mark as read'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index 26d9110ea9be67bcbf78f86e43db9328ff965a37..dd75149ad29763c1a7d6acddfcb805d25cee1424 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -7,11 +7,6 @@ import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
 import { MoreThan } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'インスタンス情報を取得します。',
-		'en-US': 'Get the information of this instance.'
-	},
-
 	tags: ['meta'],
 
 	requireCredential: false as const,
@@ -38,13 +33,11 @@ export const meta = {
 			version: {
 				type: 'string' as const,
 				optional: false as const, nullable: false as const,
-				description: 'The version of Misskey of this instance.',
 				example: config.version
 			},
 			name: {
 				type: 'string' as const,
 				optional: false as const, nullable: false as const,
-				description: 'The name of this instance.',
 			},
 			uri: {
 				type: 'string' as const,
@@ -55,7 +48,6 @@ export const meta = {
 			description: {
 				type: 'string' as const,
 				optional: false as const, nullable: true as const,
-				description: 'The description of this instance.',
 			},
 			langs: {
 				type: 'array' as const,
@@ -87,17 +79,14 @@ export const meta = {
 			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,
diff --git a/src/server/api/endpoints/mute/create.ts b/src/server/api/endpoints/mute/create.ts
index 6c1e1e2fdd2616b375eb436cc192379fcc5b47b0..7f018a359a92b96c53b5e96e34ea3a1262c21a67 100644
--- a/src/server/api/endpoints/mute/create.ts
+++ b/src/server/api/endpoints/mute/create.ts
@@ -9,11 +9,6 @@ import { Muting } from '../../../../models/entities/muting';
 import { publishUserEvent } from '../../../../services/stream';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーをミュートします。',
-		'en-US': 'Mute a user'
-	},
-
 	tags: ['account'],
 
 	requireCredential: true as const,
@@ -23,10 +18,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/mute/delete.ts b/src/server/api/endpoints/mute/delete.ts
index 2a008b64c73876cf95098483f1dbb29f8caf7302..bfb6a95e32fe05fe77d0fc203d40726f4b3817dc 100644
--- a/src/server/api/endpoints/mute/delete.ts
+++ b/src/server/api/endpoints/mute/delete.ts
@@ -7,11 +7,6 @@ import { Mutings } from '../../../../models';
 import { publishUserEvent } from '../../../../services/stream';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーのミュートを解除します。',
-		'en-US': 'Unmute a user'
-	},
-
 	tags: ['account'],
 
 	requireCredential: true as const,
@@ -21,10 +16,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/mute/list.ts b/src/server/api/endpoints/mute/list.ts
index daa52b9ff5eab838880c82232d12edeb3f72725f..45952ec72e85f6b28be2595e57a867f4497a536d 100644
--- a/src/server/api/endpoints/mute/list.ts
+++ b/src/server/api/endpoints/mute/list.ts
@@ -5,11 +5,6 @@ import { makePaginationQuery } from '../../common/make-pagination-query';
 import { Mutings } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ミュートしているユーザー一覧を取得します。',
-		'en-US': 'Get muted users.'
-	},
-
 	tags: ['account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/my/apps.ts b/src/server/api/endpoints/my/apps.ts
index 2ca882fd6d3672ce7de7961da7c2d94407cc394f..908e24e1bacea4292094adc3e06543f8c80eb414 100644
--- a/src/server/api/endpoints/my/apps.ts
+++ b/src/server/api/endpoints/my/apps.ts
@@ -5,11 +5,6 @@ import { Apps } from '../../../../models';
 export const meta = {
 	tags: ['account', 'app'],
 
-	desc: {
-		'ja-JP': '自分のアプリケーション一覧を取得します。',
-		'en-US': 'Get my apps'
-	},
-
 	requireCredential: true as const,
 
 	params: {
diff --git a/src/server/api/endpoints/notes.ts b/src/server/api/endpoints/notes.ts
index 0e892953510cf815b9c869d680b380df45e67bc7..fdb8bad24769813772c1a25baed57382d875fd31 100644
--- a/src/server/api/endpoints/notes.ts
+++ b/src/server/api/endpoints/notes.ts
@@ -5,46 +5,27 @@ import { makePaginationQuery } from '../common/make-pagination-query';
 import { Notes } from '../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '投稿を取得します。'
-	},
-
 	tags: ['notes'],
 
 	params: {
 		local: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'ローカルの投稿に限定するか否か'
-			}
 		},
 
 		reply: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': '返信に限定するか否か'
-			}
 		},
 
 		renote: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'Renoteに限定するか否か'
-			}
 		},
 
 		withFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'ファイルが添付された投稿に限定するか否か'
-			}
 		},
 
 		poll: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'アンケートが添付された投稿に限定するか否か'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/notes/children.ts b/src/server/api/endpoints/notes/children.ts
index bbfd0632c3d4f51f4bb10b66ea859adc2ad878e4..adbe714bf44a03aa7146c71d546c457d6adaaf23 100644
--- a/src/server/api/endpoints/notes/children.ts
+++ b/src/server/api/endpoints/notes/children.ts
@@ -8,11 +8,6 @@ import { Brackets } from 'typeorm';
 import { Notes } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿への返信/引用を取得します。',
-		'en-US': 'Get replies/quotes of a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: false as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/notes/conversation.ts b/src/server/api/endpoints/notes/conversation.ts
index 95ab4ec1e0a74f38b5e9b6b6d856415e26017adb..0fd10df0771060e4d718f4e97ea906efa7ee0f88 100644
--- a/src/server/api/endpoints/notes/conversation.ts
+++ b/src/server/api/endpoints/notes/conversation.ts
@@ -7,11 +7,6 @@ import { Note } from '../../../../models/entities/note';
 import { Notes } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿の文脈を取得します。',
-		'en-US': 'Show conversation of a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: false as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index 29cc650b8db7ce4fc001888ea3e67a1c0d0a6d62..ddb5c953ecacad6fea616d0b5f3f1293ecfa9c91 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -23,10 +23,6 @@ setInterval(() => {
 }, 3000);
 
 export const meta = {
-	desc: {
-		'ja-JP': '投稿します。'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -42,16 +38,10 @@ export const meta = {
 		visibility: {
 			validator: $.optional.str.or(noteVisibilities as unknown as string[]),
 			default: 'public',
-			desc: {
-				'ja-JP': '投稿の公開範囲'
-			}
 		},
 
 		visibleUserIds: {
 			validator: $.optional.arr($.type(ID)).unique().min(0),
-			desc: {
-				'ja-JP': '(投稿の公開範囲が specified の場合)投稿を閲覧できるユーザー'
-			}
 		},
 
 		text: {
@@ -60,93 +50,57 @@ export const meta = {
 					&& length(text.trim()) <= maxNoteTextLength
 					&& Array.from(text.trim()).length <= DB_MAX_NOTE_TEXT_LENGTH	// DB limit
 			),
-			default: null as any,
-			desc: {
-				'ja-JP': '投稿内容'
-			}
+			default: null,
 		},
 
 		cw: {
 			validator: $.optional.nullable.str.pipe(Notes.validateCw),
-			desc: {
-				'ja-JP': 'コンテンツの警告。このパラメータを指定すると設定したテキストで投稿のコンテンツを隠す事が出来ます。'
-			}
 		},
 
 		viaMobile: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': 'モバイルデバイスからの投稿か否か。'
-			}
 		},
 
 		localOnly: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': 'ローカルのみに投稿か否か。'
-			}
 		},
 
 		noExtractMentions: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': '本文からメンションを展開しないか否か。'
-			}
 		},
 
 		noExtractHashtags: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': '本文からハッシュタグを展開しないか否か。'
-			}
 		},
 
 		noExtractEmojis: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': '本文からカスタム絵文字を展開しないか否か。'
-			}
 		},
 
 		fileIds: {
 			validator: $.optional.arr($.type(ID)).unique().range(1, 4),
-			desc: {
-				'ja-JP': '添付するファイル'
-			}
 		},
 
 		mediaIds: {
 			validator: $.optional.arr($.type(ID)).unique().range(1, 4),
 			deprecated: true,
-			desc: {
-				'ja-JP': '添付するファイル (このパラメータは廃止予定です。代わりに fileIds を使ってください。)'
-			}
 		},
 
 		replyId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': '返信対象'
-			}
 		},
 
 		renoteId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': 'Renote対象'
-			}
 		},
 
 		channelId: {
 			validator: $.optional.nullable.type(ID),
-			desc: {
-				'ja-JP': 'チャンネル'
-			}
 		},
 
 		poll: {
@@ -159,9 +113,6 @@ export const meta = {
 				expiresAt: $.optional.nullable.num.int(),
 				expiredAfter: $.optional.nullable.num.int().min(1)
 			}).strict(),
-			desc: {
-				'ja-JP': 'アンケート'
-			},
 			ref: 'poll'
 		}
 	},
@@ -174,7 +125,6 @@ export const meta = {
 				type: 'object' as const,
 				optional: false as const, nullable: false as const,
 				ref: 'Note',
-				description: '作成した投稿'
 			}
 		}
 	},
diff --git a/src/server/api/endpoints/notes/delete.ts b/src/server/api/endpoints/notes/delete.ts
index 154cff0741eef1764a0a36749ac131138d825eb6..6a0652312a096b3f947a25abfe70bfdb8742e804 100644
--- a/src/server/api/endpoints/notes/delete.ts
+++ b/src/server/api/endpoints/notes/delete.ts
@@ -8,11 +8,6 @@ import { ApiError } from '../../error';
 import { Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿を削除します。',
-		'en-US': 'Delete a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -28,10 +23,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notes/favorites/create.ts b/src/server/api/endpoints/notes/favorites/create.ts
index 846c80a8d65d859c9b325e46ed8c13e8ec6072b3..b77b5d48ffe5be987c4a3b408e2a89b5099c38de 100644
--- a/src/server/api/endpoints/notes/favorites/create.ts
+++ b/src/server/api/endpoints/notes/favorites/create.ts
@@ -7,11 +7,6 @@ import { NoteFavorites } from '../../../../../models';
 import { genId } from '@/misc/gen-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿をお気に入りに登録します。',
-		'en-US': 'Favorite a note.'
-	},
-
 	tags: ['notes', 'favorites'],
 
 	requireCredential: true as const,
@@ -21,10 +16,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notes/favorites/delete.ts b/src/server/api/endpoints/notes/favorites/delete.ts
index 2be4f6408e284e5060bc009741e6e8a6643bcdad..4a1fc71a0df5a0cd44ac3af4dfb64a455deec32a 100644
--- a/src/server/api/endpoints/notes/favorites/delete.ts
+++ b/src/server/api/endpoints/notes/favorites/delete.ts
@@ -6,11 +6,6 @@ import { getNote } from '../../../common/getters';
 import { NoteFavorites } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿のお気に入りを解除します。',
-		'en-US': 'Unfavorite a note.'
-	},
-
 	tags: ['notes', 'favorites'],
 
 	requireCredential: true as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notes/featured.ts b/src/server/api/endpoints/notes/featured.ts
index b3dffa427252ef82f874d37595dbe6f6c7a19695..5b4367f7a32e62f08a2a8881c6e47bdfd394c843 100644
--- a/src/server/api/endpoints/notes/featured.ts
+++ b/src/server/api/endpoints/notes/featured.ts
@@ -4,11 +4,6 @@ import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
 import { Notes } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'Featuredな投稿を取得します。',
-		'en-US': 'Get featured notes.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: false as const,
@@ -17,9 +12,6 @@ export const meta = {
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '最大数'
-			}
 		},
 
 		offset: {
diff --git a/src/server/api/endpoints/notes/global-timeline.ts b/src/server/api/endpoints/notes/global-timeline.ts
index 1e1df4040df22b35f9362a48b2c793f3da547d57..741c5985a33c2f5d52cbccc22f96c877498bcb92 100644
--- a/src/server/api/endpoints/notes/global-timeline.ts
+++ b/src/server/api/endpoints/notes/global-timeline.ts
@@ -11,18 +11,11 @@ import { generateRepliesQuery } from '../../common/generate-replies-query';
 import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'グローバルタイムラインを取得します。'
-	},
-
 	tags: ['notes'],
 
 	params: {
 		withFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'ファイルが添付された投稿に限定するか否か'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/notes/hybrid-timeline.ts b/src/server/api/endpoints/notes/hybrid-timeline.ts
index ac44e747dc6c451327e015c94b6135d2b6d9d277..23fc5a6068a02c0163956ccb44ed1ee70fd8e46b 100644
--- a/src/server/api/endpoints/notes/hybrid-timeline.ts
+++ b/src/server/api/endpoints/notes/hybrid-timeline.ts
@@ -14,10 +14,6 @@ import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
 import { generateChannelQuery } from '../../common/generate-channel-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ソーシャルタイムラインを取得します。'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -26,68 +22,41 @@ export const meta = {
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '最大数'
-			}
 		},
 
 		sinceId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより新しい投稿を取得します'
-			}
 		},
 
 		untilId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより古い投稿を取得します'
-			}
 		},
 
 		sinceDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		untilDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		includeMyRenotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': '自分の行ったRenoteを含めるかどうか'
-			}
 		},
 
 		includeRenotedMyNotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': 'Renoteされた自分の投稿を含めるかどうか'
-			}
 		},
 
 		includeLocalRenotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': 'Renoteされたローカルの投稿を含めるかどうか'
-			}
 		},
 
 		withFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/notes/local-timeline.ts b/src/server/api/endpoints/notes/local-timeline.ts
index 113078a988e0f0d2fb3375ac01ed4b5acff446f4..523fbee9a8ad3f4db9ad11c5a1feb325cd724cb3 100644
--- a/src/server/api/endpoints/notes/local-timeline.ts
+++ b/src/server/api/endpoints/notes/local-timeline.ts
@@ -14,33 +14,20 @@ import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
 import { generateChannelQuery } from '../../common/generate-channel-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ローカルタイムラインを取得します。'
-	},
-
 	tags: ['notes'],
 
 	params: {
 		withFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'ファイルが添付された投稿に限定するか否か'
-			}
 		},
 
 		fileType: {
 			validator: $.optional.arr($.str),
-			desc: {
-				'ja-JP': '指定された種類のファイルが添付された投稿のみを取得します'
-			}
 		},
 
 		excludeNsfw: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': 'true にすると、NSFW指定されたファイルを除外します(fileTypeが指定されている場合のみ有効)'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/notes/mentions.ts b/src/server/api/endpoints/notes/mentions.ts
index dddd08eee6caa8e1f10895700f11b0dd7618527d..e1e916c5862a7ff4f723179b93484cf7d840b425 100644
--- a/src/server/api/endpoints/notes/mentions.ts
+++ b/src/server/api/endpoints/notes/mentions.ts
@@ -9,11 +9,6 @@ import { makePaginationQuery } from '../../common/make-pagination-query';
 import { Brackets } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分に言及している投稿の一覧を取得します。',
-		'en-US': 'Get mentions of myself.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/notes/polls/recommendation.ts b/src/server/api/endpoints/notes/polls/recommendation.ts
index 93c9ff08ca9d28ab74a47f2b6f7399b0af80b16f..af8a5273988027eba0459f1871ab1cbcbd9c3ca9 100644
--- a/src/server/api/endpoints/notes/polls/recommendation.ts
+++ b/src/server/api/endpoints/notes/polls/recommendation.ts
@@ -4,11 +4,6 @@ import { Polls, Mutings, Notes, PollVotes } from '../../../../../models';
 import { Brackets, In } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'おすすめのアンケート一覧を取得します。',
-		'en-US': 'Get recommended polls.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts
index 51dcec89c789214e509c790dfc6a2cd8dcee85e6..b40e187fd8f89f6adab87e6eecbebcda35d2350f 100644
--- a/src/server/api/endpoints/notes/polls/vote.ts
+++ b/src/server/api/endpoints/notes/polls/vote.ts
@@ -15,11 +15,6 @@ import { IRemoteUser } from '../../../../../models/entities/user';
 import { genId } from '@/misc/gen-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿のアンケートに投票します。',
-		'en-US': 'Vote poll of a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -29,10 +24,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID'
-			}
 		},
 
 		choice: {
diff --git a/src/server/api/endpoints/notes/reactions.ts b/src/server/api/endpoints/notes/reactions.ts
index 3c60fa2e8e27c347b24f83a22dd0159b92d5e3b4..df780bfa06fde9fd7a803bdb932325213927d205 100644
--- a/src/server/api/endpoints/notes/reactions.ts
+++ b/src/server/api/endpoints/notes/reactions.ts
@@ -8,11 +8,6 @@ import { DeepPartial } from 'typeorm';
 import { NoteReaction } from '../../../../models/entities/note-reaction';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿のリアクション一覧を取得します。',
-		'en-US': 'Show reactions of a note.'
-	},
-
 	tags: ['notes', 'reactions'],
 
 	requireCredential: false as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'The ID of the target note'
-			}
 		},
 
 		type: {
diff --git a/src/server/api/endpoints/notes/reactions/create.ts b/src/server/api/endpoints/notes/reactions/create.ts
index 17a6f391d4967f1e83c7440d8fc5ea18fe99b897..e8533fee56a1ecdcfbdb7ecb10ee4603f92acbec 100644
--- a/src/server/api/endpoints/notes/reactions/create.ts
+++ b/src/server/api/endpoints/notes/reactions/create.ts
@@ -6,11 +6,6 @@ import { getNote } from '../../../common/getters';
 import { ApiError } from '../../../error';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿にリアクションします。',
-		'en-US': 'React to a note.'
-	},
-
 	tags: ['reactions', 'notes'],
 
 	requireCredential: true as const,
@@ -20,16 +15,10 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿'
-			}
 		},
 
 		reaction: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'リアクションの種類'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notes/reactions/delete.ts b/src/server/api/endpoints/notes/reactions/delete.ts
index b95c7f891b35ebe29fbd5f906c65f56a12c3d71a..b18cb533d65fd5617448157423189a267a8b685d 100644
--- a/src/server/api/endpoints/notes/reactions/delete.ts
+++ b/src/server/api/endpoints/notes/reactions/delete.ts
@@ -7,11 +7,6 @@ import { getNote } from '../../../common/getters';
 import { ApiError } from '../../../error';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿へのリアクションを取り消します。',
-		'en-US': 'Unreact to a note.'
-	},
-
 	tags: ['reactions', 'notes'],
 
 	requireCredential: true as const,
@@ -27,10 +22,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/notes/renotes.ts b/src/server/api/endpoints/notes/renotes.ts
index d26192d10a3e0a2c1cc6bcaa16a37b368dca385a..d384b7962fbe51657baa12e6da5a28dad59f8557 100644
--- a/src/server/api/endpoints/notes/renotes.ts
+++ b/src/server/api/endpoints/notes/renotes.ts
@@ -9,11 +9,6 @@ import { makePaginationQuery } from '../../common/make-pagination-query';
 import { Notes } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿のRenote一覧を取得します。',
-		'en-US': 'Show a renotes of a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: false as const,
@@ -21,10 +16,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/notes/replies.ts b/src/server/api/endpoints/notes/replies.ts
index e91a1cf0bf62203af473014850e091683aaad10f..79a983e75f3d8dd608628024f077fe95f0cbe09c 100644
--- a/src/server/api/endpoints/notes/replies.ts
+++ b/src/server/api/endpoints/notes/replies.ts
@@ -7,11 +7,6 @@ import { generateVisibilityQuery } from '../../common/generate-visibility-query'
 import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿への返信を取得します。',
-		'en-US': 'Get replies of a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: false as const,
@@ -19,24 +14,14 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID'
-			}
 		},
 
 		sinceId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより新しい投稿を取得します'
-			}
 		},
 
 		untilId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより古い投稿を取得します'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/notes/search-by-tag.ts b/src/server/api/endpoints/notes/search-by-tag.ts
index 463c5fff5abe156ed7ca30d841867ecbe484fdf1..bbada176136fe86fa7da39ed6419ba1b445b51c1 100644
--- a/src/server/api/endpoints/notes/search-by-tag.ts
+++ b/src/server/api/endpoints/notes/search-by-tag.ts
@@ -10,70 +10,42 @@ import { safeForSql } from '@/misc/safe-for-sql';
 import { normalizeForSearch } from '@/misc/normalize-for-search';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定されたタグが付けられた投稿を取得します。'
-	},
-
 	tags: ['notes', 'hashtags'],
 
 	params: {
 		tag: {
 			validator: $.optional.str,
-			desc: {
-				'ja-JP': 'ã‚¿ã‚°'
-			}
 		},
 
 		query: {
 			validator: $.optional.arr($.arr($.str)),
-			desc: {
-				'ja-JP': 'クエリ'
-			}
 		},
 
 		reply: {
 			validator: $.optional.nullable.bool,
-			default: null as any,
-			desc: {
-				'ja-JP': '返信に限定するか否か'
-			}
+			default: null,
 		},
 
 		renote: {
 			validator: $.optional.nullable.bool,
-			default: null as any,
-			desc: {
-				'ja-JP': 'Renoteに限定するか否か'
-			}
+			default: null,
 		},
 
 		withFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
-			}
 		},
 
 		poll: {
 			validator: $.optional.nullable.bool,
-			default: null as any,
-			desc: {
-				'ja-JP': 'アンケートが添付された投稿に限定するか否か'
-			}
+			default: null,
 		},
 
 		sinceId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより新しい投稿を取得します'
-			}
 		},
 
 		untilId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより古い投稿を取得します'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/notes/search.ts b/src/server/api/endpoints/notes/search.ts
index e3454be9d344d25704b5a884e3d456cf69dacc6f..dc411283a2aff03bfe3df06858d39f1a41792832 100644
--- a/src/server/api/endpoints/notes/search.ts
+++ b/src/server/api/endpoints/notes/search.ts
@@ -10,11 +10,6 @@ import { generateVisibilityQuery } from '../../common/generate-visibility-query'
 import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': '投稿を検索します。',
-		'en-US': 'Search notes.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: false as const,
diff --git a/src/server/api/endpoints/notes/show.ts b/src/server/api/endpoints/notes/show.ts
index e592076a2e010461cf90499bf3a2584faa0a3f69..fc8e30788d7d9cc3233caadb44898cee9e4e8c24 100644
--- a/src/server/api/endpoints/notes/show.ts
+++ b/src/server/api/endpoints/notes/show.ts
@@ -6,11 +6,6 @@ import { ApiError } from '../../error';
 import { Notes } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿を取得します。',
-		'en-US': 'Get a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: false as const,
@@ -18,10 +13,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notes/state.ts b/src/server/api/endpoints/notes/state.ts
index 60151f7e3226491d2f32c8f7e5fb3bea11d313bd..8af09f07dd177da536508348c5ba0fcda9ece7b6 100644
--- a/src/server/api/endpoints/notes/state.ts
+++ b/src/server/api/endpoints/notes/state.ts
@@ -4,11 +4,6 @@ import define from '../../define';
 import { NoteFavorites, NoteWatchings } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿の状態を取得します。',
-		'en-US': 'Get state of a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -16,10 +11,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts
index 0871a9688266c2de978c0fbee984188ae3f59638..687869a63d1d197d214deafa7770846c1ded4110 100644
--- a/src/server/api/endpoints/notes/timeline.ts
+++ b/src/server/api/endpoints/notes/timeline.ts
@@ -12,11 +12,6 @@ import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
 import { generateChannelQuery } from '../../common/generate-channel-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'タイムラインを取得します。',
-		'en-US': 'Get timeline of myself.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -25,68 +20,41 @@ export const meta = {
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '最大数'
-			}
 		},
 
 		sinceId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより新しい投稿を取得します'
-			}
 		},
 
 		untilId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより古い投稿を取得します'
-			}
 		},
 
 		sinceDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		untilDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		includeMyRenotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': '自分の行ったRenoteを含めるかどうか'
-			}
 		},
 
 		includeRenotedMyNotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': 'Renoteされた自分の投稿を含めるかどうか'
-			}
 		},
 
 		includeLocalRenotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': 'Renoteされたローカルの投稿を含めるかどうか'
-			}
 		},
 
 		withFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/notes/unrenote.ts b/src/server/api/endpoints/notes/unrenote.ts
index 0233b9db128d34bbd9a5d38c9070b7fe1a7de3a5..5e016f293f576465bfd9250141d82a0a529c917d 100644
--- a/src/server/api/endpoints/notes/unrenote.ts
+++ b/src/server/api/endpoints/notes/unrenote.ts
@@ -8,10 +8,6 @@ import { ApiError } from '../../error';
 import { Notes, Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿のRenoteを解除します。',
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -27,10 +23,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notes/user-list-timeline.ts b/src/server/api/endpoints/notes/user-list-timeline.ts
index cb3c18505d4e46a03924200ba87f6606695ca387..e160fff25a738534cfeed2dee8bf289edee6e93b 100644
--- a/src/server/api/endpoints/notes/user-list-timeline.ts
+++ b/src/server/api/endpoints/notes/user-list-timeline.ts
@@ -9,11 +9,6 @@ import { activeUsersChart } from '../../../../services/chart';
 import { Brackets } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーリストのタイムラインを取得します。',
-		'en-US': 'Get timeline of a user list.'
-	},
-
 	tags: ['notes', 'lists'],
 
 	requireCredential: true as const,
@@ -21,76 +16,46 @@ export const meta = {
 	params: {
 		listId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': 'リストのID'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '最大数'
-			}
 		},
 
 		sinceId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより新しい投稿を取得します'
-			}
 		},
 
 		untilId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより古い投稿を取得します'
-			}
 		},
 
 		sinceDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		untilDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		includeMyRenotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': '自分の行ったRenoteを含めるかどうか'
-			}
 		},
 
 		includeRenotedMyNotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': 'Renoteされた自分の投稿を含めるかどうか'
-			}
 		},
 
 		includeLocalRenotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': 'Renoteされたローカルの投稿を含めるかどうか'
-			}
 		},
 
 		withFiles: {
 			validator: $.optional.bool,
-			desc: {
-				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/notes/watching/create.ts b/src/server/api/endpoints/notes/watching/create.ts
index 7667ebdedd3e2d17b687ce35eee0d9a2d75a86bc..74d31fe1a3934c3cede5fe20052e2e4c7857f1bd 100644
--- a/src/server/api/endpoints/notes/watching/create.ts
+++ b/src/server/api/endpoints/notes/watching/create.ts
@@ -6,11 +6,6 @@ import { getNote } from '../../../common/getters';
 import { ApiError } from '../../../error';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿をウォッチします。',
-		'en-US': 'Watch a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notes/watching/delete.ts b/src/server/api/endpoints/notes/watching/delete.ts
index 77b4ff15c87d94b58510f602e26f506dc01cff4f..a91d72be054b952ffc304dae15895dcceea95650 100644
--- a/src/server/api/endpoints/notes/watching/delete.ts
+++ b/src/server/api/endpoints/notes/watching/delete.ts
@@ -6,11 +6,6 @@ import { getNote } from '../../../common/getters';
 import { ApiError } from '../../../error';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定した投稿のウォッチを解除します。',
-		'en-US': 'Unwatch a note.'
-	},
-
 	tags: ['notes'],
 
 	requireCredential: true as const,
@@ -20,10 +15,6 @@ export const meta = {
 	params: {
 		noteId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象の投稿のID',
-				'en-US': 'Target note ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/notifications/create.ts b/src/server/api/endpoints/notifications/create.ts
index e447a32e0b8fdc451764785282e1a03cc6fd7bea..6267699e906ec5284ccb2d4f808982ce1f606c7d 100644
--- a/src/server/api/endpoints/notifications/create.ts
+++ b/src/server/api/endpoints/notifications/create.ts
@@ -3,10 +3,6 @@ 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/notifications/mark-all-as-read.ts b/src/server/api/endpoints/notifications/mark-all-as-read.ts
index a17a3e721605f23936eeb08fbd6292aa9df378bf..cce54587c7cbb2df5429f0e63d21c1f78aff1fa0 100644
--- a/src/server/api/endpoints/notifications/mark-all-as-read.ts
+++ b/src/server/api/endpoints/notifications/mark-all-as-read.ts
@@ -3,11 +3,6 @@ import define from '../../define';
 import { Notifications } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '全ての通知を既読にします。',
-		'en-US': 'Mark all notifications as read.'
-	},
-
 	tags: ['notifications', 'account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/pages/create.ts b/src/server/api/endpoints/pages/create.ts
index 413445512337871fc1540689e24aadfe6d1a808a..07e0969bdd70251877f7bd1aeba1006b0b8ddb4b 100644
--- a/src/server/api/endpoints/pages/create.ts
+++ b/src/server/api/endpoints/pages/create.ts
@@ -8,10 +8,6 @@ import { Page } from '../../../../models/entities/page';
 import { ApiError } from '../../error';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ページを作成します。',
-	},
-
 	tags: ['pages'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/pages/delete.ts b/src/server/api/endpoints/pages/delete.ts
index 51704c866e82176cb242234acd994eb87a77332c..12a3360e43120e982e02ebb4c018a97924c8044e 100644
--- a/src/server/api/endpoints/pages/delete.ts
+++ b/src/server/api/endpoints/pages/delete.ts
@@ -5,10 +5,6 @@ import { Pages } from '../../../../models';
 import { ID } from '@/misc/cafy-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したページを削除します。',
-	},
-
 	tags: ['pages'],
 
 	requireCredential: true as const,
@@ -18,10 +14,6 @@ export const meta = {
 	params: {
 		pageId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のページのID',
-				'en-US': 'Target page ID.'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/pages/like.ts b/src/server/api/endpoints/pages/like.ts
index e6c15164c0f1fb85cae16a03a49caf23ec7be191..bed8e975ecd93903788b4b7158dd7dc8517cf75c 100644
--- a/src/server/api/endpoints/pages/like.ts
+++ b/src/server/api/endpoints/pages/like.ts
@@ -6,10 +6,6 @@ import { Pages, PageLikes } from '../../../../models';
 import { genId } from '@/misc/gen-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したページを「いいね」します。',
-	},
-
 	tags: ['pages'],
 
 	requireCredential: true as const,
@@ -19,10 +15,6 @@ export const meta = {
 	params: {
 		pageId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のページのID',
-				'en-US': 'Target page ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/pages/show.ts b/src/server/api/endpoints/pages/show.ts
index 13fa9ba1d0383832c37089b4f0151acedaaebeb6..d4d04bccffd3db8273ae95a7479ab9b0947b35fd 100644
--- a/src/server/api/endpoints/pages/show.ts
+++ b/src/server/api/endpoints/pages/show.ts
@@ -6,10 +6,6 @@ import { ID } from '@/misc/cafy-id';
 import { Page } from '../../../../models/entities/page';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したページの情報を取得します。',
-	},
-
 	tags: ['pages'],
 
 	requireCredential: false as const,
@@ -17,10 +13,6 @@ export const meta = {
 	params: {
 		pageId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のページのID',
-				'en-US': 'Target page ID.'
-			}
 		},
 
 		name: {
diff --git a/src/server/api/endpoints/pages/unlike.ts b/src/server/api/endpoints/pages/unlike.ts
index 2008dd8bef2ae01fcf8f6ae799a7a81093c99098..a5e22a2c7b9f1ed38639f44b51447a3879a5128f 100644
--- a/src/server/api/endpoints/pages/unlike.ts
+++ b/src/server/api/endpoints/pages/unlike.ts
@@ -5,10 +5,6 @@ import { ApiError } from '../../error';
 import { Pages, PageLikes } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したページの「いいね」を解除します。',
-	},
-
 	tags: ['pages'],
 
 	requireCredential: true as const,
@@ -18,10 +14,6 @@ export const meta = {
 	params: {
 		pageId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のページのID',
-				'en-US': 'Target page ID.'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/pages/update.ts b/src/server/api/endpoints/pages/update.ts
index d52d5964cbc696f1b39c951a3f0cc55ed7b35c0e..6d1ae4c6fefa50a3898781fafd803b5d3f7eb382 100644
--- a/src/server/api/endpoints/pages/update.ts
+++ b/src/server/api/endpoints/pages/update.ts
@@ -7,10 +7,6 @@ import { ID } from '@/misc/cafy-id';
 import { Not } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したページの情報を更新します。',
-	},
-
 	tags: ['pages'],
 
 	requireCredential: true as const,
@@ -25,10 +21,6 @@ export const meta = {
 	params: {
 		pageId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のページのID',
-				'en-US': 'Target page ID.'
-			}
 		},
 
 		title: {
diff --git a/src/server/api/endpoints/promo/read.ts b/src/server/api/endpoints/promo/read.ts
index 325a96e57212e2237d70807638f3e7994a94df27..32b543295d339aa1f2dbecf373e44eb7d5cde69e 100644
--- a/src/server/api/endpoints/promo/read.ts
+++ b/src/server/api/endpoints/promo/read.ts
@@ -7,11 +7,6 @@ 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 13f9df19acf0ce84591ca2290322402e1b11b630..85cd57aef460e3e03679854f02a2698f263efb5f 100644
--- a/src/server/api/endpoints/room/show.ts
+++ b/src/server/api/endpoints/room/show.ts
@@ -6,10 +6,6 @@ import { ID } from '@/misc/cafy-id';
 import { toPunyNullable } from '@/misc/convert-host';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーの部屋の情報を取得します。',
-	},
-
 	tags: ['room'],
 
 	requireCredential: false as const,
@@ -17,10 +13,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		username: {
@@ -67,7 +59,6 @@ export const meta = {
 						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,
diff --git a/src/server/api/endpoints/stats.ts b/src/server/api/endpoints/stats.ts
index 33d6af515b5047f52094fad673b784d2626e38b3..f9c17f86ebe41b2002f770b34df5fa1ee8543a7e 100644
--- a/src/server/api/endpoints/stats.ts
+++ b/src/server/api/endpoints/stats.ts
@@ -5,11 +5,6 @@ import { federationChart, driveChart } from '../../../services/chart';
 export const meta = {
 	requireCredential: false as const,
 
-	desc: {
-		'ja-JP': 'インスタンスの統計を取得します。',
-		'en-US': 'Get the instance\'s statistics'
-	},
-
 	tags: ['meta'],
 
 	params: {
@@ -22,27 +17,22 @@ export const meta = {
 			notesCount: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'The count of all (local/remote) notes of this instance.',
 			},
 			originalNotesCount: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'The count of all local notes of this instance.',
 			},
 			usersCount: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'The count of all (local/remote) accounts of this instance.',
 			},
 			originalUsersCount: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'The count of all local accounts of this instance.',
 			},
 			instances: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'The count of federated instances.',
 			},
 			driveUsageLocal: {
 				type: 'number' as const,
diff --git a/src/server/api/endpoints/username/available.ts b/src/server/api/endpoints/username/available.ts
index 6a5146e432c48e8d6b434aa6182aa04f9f03c581..cd434b582ecfca964c2e3513bd285ca30f5eba4d 100644
--- a/src/server/api/endpoints/username/available.ts
+++ b/src/server/api/endpoints/username/available.ts
@@ -3,11 +3,6 @@ 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,
@@ -25,7 +20,6 @@ export const meta = {
 			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 354d7dc70b43e092ada9fba2ca4c600c0ace4f7f..933eb70b6f488ad1f8e009de6ac24eb3ecde396b 100644
--- a/src/server/api/endpoints/users.ts
+++ b/src/server/api/endpoints/users.ts
@@ -4,11 +4,6 @@ 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,
diff --git a/src/server/api/endpoints/users/followers.ts b/src/server/api/endpoints/users/followers.ts
index da8a1ea1b255b0c978cee7ab28b9aa233efbbb7f..c9fe36e4e4fe1b2dfc695c93ece9258308940002 100644
--- a/src/server/api/endpoints/users/followers.ts
+++ b/src/server/api/endpoints/users/followers.ts
@@ -7,11 +7,6 @@ import { makePaginationQuery } from '../../common/make-pagination-query';
 import { toPunyNullable } from '@/misc/convert-host';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーのフォロワー一覧を取得します。',
-		'en-US': 'Get followers of a user.'
-	},
-
 	tags: ['users'],
 
 	requireCredential: false as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		username: {
diff --git a/src/server/api/endpoints/users/following.ts b/src/server/api/endpoints/users/following.ts
index 832a51d29741a9f867d2462a2a63be7b90b9e144..c3dd90ff7e0a7b02206d53d388cbae1ab9ee22d9 100644
--- a/src/server/api/endpoints/users/following.ts
+++ b/src/server/api/endpoints/users/following.ts
@@ -7,11 +7,6 @@ import { makePaginationQuery } from '../../common/make-pagination-query';
 import { toPunyNullable } from '@/misc/convert-host';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーのフォロー一覧を取得します。',
-		'en-US': 'Get following users of a user.'
-	},
-
 	tags: ['users'],
 
 	requireCredential: false as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		username: {
diff --git a/src/server/api/endpoints/users/get-frequently-replied-users.ts b/src/server/api/endpoints/users/get-frequently-replied-users.ts
index 98b8a49fda4691b4c86d17aefb21e5c9cdde19ef..bdfb7772ae3c1e916ae9f831a4ddd1448ec5ea55 100644
--- a/src/server/api/endpoints/users/get-frequently-replied-users.ts
+++ b/src/server/api/endpoints/users/get-frequently-replied-users.ts
@@ -15,10 +15,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		limit: {
diff --git a/src/server/api/endpoints/users/groups/create.ts b/src/server/api/endpoints/users/groups/create.ts
index 0966ef7819a49d2552d467a64a33f13e82b93466..2cd0653baaea192768d5686e62735d67213fbbfc 100644
--- a/src/server/api/endpoints/users/groups/create.ts
+++ b/src/server/api/endpoints/users/groups/create.ts
@@ -6,11 +6,6 @@ import { UserGroup } from '../../../../../models/entities/user-group';
 import { UserGroupJoining } from '../../../../../models/entities/user-group-joining';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーグループを作成します。',
-		'en-US': 'Create a user group.'
-	},
-
 	tags: ['groups'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/users/groups/delete.ts b/src/server/api/endpoints/users/groups/delete.ts
index 85e2e73325f74deaa0a3b5713cccfd65970693f7..4c4a8c15b1c35399bd0cc3f951b64ac10708755f 100644
--- a/src/server/api/endpoints/users/groups/delete.ts
+++ b/src/server/api/endpoints/users/groups/delete.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../error';
 import { UserGroups } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーグループを削除します。',
-		'en-US': 'Delete a user group'
-	},
-
 	tags: ['groups'],
 
 	requireCredential: true as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		groupId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象となるユーザーグループのID',
-				'en-US': 'ID of target user group'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/users/groups/invitations/accept.ts b/src/server/api/endpoints/users/groups/invitations/accept.ts
index d6d419826eb3592309f3ac7dba7d09331243e400..943d158661bd6a8c2deee915d1a979a8d4040d50 100644
--- a/src/server/api/endpoints/users/groups/invitations/accept.ts
+++ b/src/server/api/endpoints/users/groups/invitations/accept.ts
@@ -7,11 +7,6 @@ import { genId } from '@/misc/gen-id';
 import { UserGroupJoining } from '../../../../../../models/entities/user-group-joining';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーグループへの招待を承認します。',
-		'en-US': 'Accept invitation of a user group.'
-	},
-
 	tags: ['groups', 'users'],
 
 	requireCredential: true as const,
@@ -21,10 +16,6 @@ export const meta = {
 	params: {
 		invitationId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '招待ID',
-				'en-US': 'The invitation ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/groups/invitations/reject.ts b/src/server/api/endpoints/users/groups/invitations/reject.ts
index 98dc7bfbdf497a4b4c3aed6a437acb2b8f487194..4bc902ae5de40ca8ab265539204293ce216af54e 100644
--- a/src/server/api/endpoints/users/groups/invitations/reject.ts
+++ b/src/server/api/endpoints/users/groups/invitations/reject.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../../error';
 import { UserGroupInvitations } from '../../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーグループへの招待を拒否します。',
-		'en-US': 'Reject invitation of a user group.'
-	},
-
 	tags: ['groups', 'users'],
 
 	requireCredential: true as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		invitationId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '招待ID',
-				'en-US': 'The invitation ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/groups/invite.ts b/src/server/api/endpoints/users/groups/invite.ts
index 00d4932f550bf5d36882eeb126a4e729e2732ea0..688b18f69d5b63e479f825ab7db5bcc326b314bb 100644
--- a/src/server/api/endpoints/users/groups/invite.ts
+++ b/src/server/api/endpoints/users/groups/invite.ts
@@ -9,11 +9,6 @@ import { UserGroupInvitation } from '../../../../../models/entities/user-group-i
 import { createNotification } from '../../../../../services/create-notification';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーグループに指定したユーザーを招待します。',
-		'en-US': 'Invite a user to a user group.'
-	},
-
 	tags: ['groups', 'users'],
 
 	requireCredential: true as const,
@@ -27,10 +22,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/groups/joined.ts b/src/server/api/endpoints/users/groups/joined.ts
index a579a738e584d6d4d45d7dc49d2793f9352d2817..b25341c8542143988f1c352aed23e4dc8a3c8692 100644
--- a/src/server/api/endpoints/users/groups/joined.ts
+++ b/src/server/api/endpoints/users/groups/joined.ts
@@ -3,10 +3,6 @@ import { UserGroups, UserGroupJoinings } from '../../../../../models';
 import { Not, In } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分の所属するユーザーグループ一覧を取得します。'
-	},
-
 	tags: ['groups', 'account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/users/groups/owned.ts b/src/server/api/endpoints/users/groups/owned.ts
index bb34090cbc9a4a4052b4d3aea21650f110b72a00..e0b003c9e45a360bbfcd4cb767fcd5253735540f 100644
--- a/src/server/api/endpoints/users/groups/owned.ts
+++ b/src/server/api/endpoints/users/groups/owned.ts
@@ -2,10 +2,6 @@ import define from '../../../define';
 import { UserGroups } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分の作成したユーザーグループ一覧を取得します。'
-	},
-
 	tags: ['groups', 'account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/users/groups/pull.ts b/src/server/api/endpoints/users/groups/pull.ts
index 82d45e31ad80d29593189df12a7849cd8e24ccbc..d93a16bd9dc12404c97d9a2f1dc89cde83a9e427 100644
--- a/src/server/api/endpoints/users/groups/pull.ts
+++ b/src/server/api/endpoints/users/groups/pull.ts
@@ -6,11 +6,6 @@ import { getUser } from '../../../common/getters';
 import { UserGroups, UserGroupJoinings } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーグループから指定したユーザーを削除します。',
-		'en-US': 'Remove a user to a user group.'
-	},
-
 	tags: ['groups', 'users'],
 
 	requireCredential: true as const,
@@ -24,10 +19,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/groups/show.ts b/src/server/api/endpoints/users/groups/show.ts
index c174a7973c923329d1f30c5cf7901db263969d8d..1b71933c20a693f7e516a0f86c8d30d28600a78f 100644
--- a/src/server/api/endpoints/users/groups/show.ts
+++ b/src/server/api/endpoints/users/groups/show.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../error';
 import { UserGroups, UserGroupJoinings } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーグループの情報を取得します。',
-		'en-US': 'Show a user group.'
-	},
-
 	tags: ['groups', 'account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/users/groups/transfer.ts b/src/server/api/endpoints/users/groups/transfer.ts
index 08aa1b7357e0af9b96f5d227ade2ce601fdb9c5b..d6376993c965499687583dcf24fe4c77f4f6388f 100644
--- a/src/server/api/endpoints/users/groups/transfer.ts
+++ b/src/server/api/endpoints/users/groups/transfer.ts
@@ -6,11 +6,6 @@ import { getUser } from '../../../common/getters';
 import { UserGroups, UserGroupJoinings } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーグループを指定したユーザーグループ内のユーザーに譲渡します。',
-		'en-US': 'Transfer user group ownership to another user in group.'
-	},
-
 	tags: ['groups', 'users'],
 
 	requireCredential: true as const,
@@ -24,10 +19,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/groups/update.ts b/src/server/api/endpoints/users/groups/update.ts
index 8dc5a7f1b97dd370eb9f616399314575cdb71b9f..a403152b4e5206e9956b748ec63f051133682aa9 100644
--- a/src/server/api/endpoints/users/groups/update.ts
+++ b/src/server/api/endpoints/users/groups/update.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../error';
 import { UserGroups } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーグループを更新します。',
-		'en-US': 'Update a user group'
-	},
-
 	tags: ['groups'],
 
 	requireCredential: true as const,
@@ -19,18 +14,10 @@ export const meta = {
 	params: {
 		groupId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象となるユーザーグループのID',
-				'en-US': 'ID of target user group'
-			}
 		},
 
 		name: {
 			validator: $.str.range(1, 100),
-			desc: {
-				'ja-JP': 'このユーザーグループの名前',
-				'en-US': 'name of this user group'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts
index 9891a6dae0772104386d7012ebac780e89b6b9cb..c5241300897ec28573e68f5009c35f63eb7f40f6 100644
--- a/src/server/api/endpoints/users/lists/create.ts
+++ b/src/server/api/endpoints/users/lists/create.ts
@@ -5,11 +5,6 @@ import { genId } from '@/misc/gen-id';
 import { UserList } from '../../../../../models/entities/user-list';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーリストを作成します。',
-		'en-US': 'Create a user list'
-	},
-
 	tags: ['lists'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/users/lists/delete.ts b/src/server/api/endpoints/users/lists/delete.ts
index d3132025c5fe353de1df7a762ce51af96bbb3109..ecae5641c5a6b9b51cf5f8d3dc707aef7bb624b6 100644
--- a/src/server/api/endpoints/users/lists/delete.ts
+++ b/src/server/api/endpoints/users/lists/delete.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../error';
 import { UserLists } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーリストを削除します。',
-		'en-US': 'Delete a user list'
-	},
-
 	tags: ['lists'],
 
 	requireCredential: true as const,
@@ -19,10 +14,6 @@ export const meta = {
 	params: {
 		listId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象となるユーザーリストのID',
-				'en-US': 'ID of target user list'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/users/lists/list.ts b/src/server/api/endpoints/users/lists/list.ts
index 16f1b0639c00b75f2d05b5025f1d91e8ad3e2702..1548208714bc936cbc6c10b04704083d84a85eff 100644
--- a/src/server/api/endpoints/users/lists/list.ts
+++ b/src/server/api/endpoints/users/lists/list.ts
@@ -2,10 +2,6 @@ import define from '../../../define';
 import { UserLists } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '自分の作成したユーザーリスト一覧を取得します。'
-	},
-
 	tags: ['lists', 'account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/users/lists/pull.ts b/src/server/api/endpoints/users/lists/pull.ts
index ddf5864a39846df63a5443851dc3d11266e0f763..f8b5df0fc59e769f27ea4ffdf64fc4e9b8b6ecdb 100644
--- a/src/server/api/endpoints/users/lists/pull.ts
+++ b/src/server/api/endpoints/users/lists/pull.ts
@@ -7,11 +7,6 @@ import { getUser } from '../../../common/getters';
 import { UserLists, UserListJoinings, Users } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーリストから指定したユーザーを削除します。',
-		'en-US': 'Remove a user to a user list.'
-	},
-
 	tags: ['lists', 'users'],
 
 	requireCredential: true as const,
@@ -25,10 +20,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts
index c94c759d0c3ca9d93c348ecff496a116fcba9c6c..b81d5b8c765ce31a36842499eab0b4391a66d64c 100644
--- a/src/server/api/endpoints/users/lists/push.ts
+++ b/src/server/api/endpoints/users/lists/push.ts
@@ -7,11 +7,6 @@ import { pushUserToUserList } from '../../../../../services/user-list/push';
 import { UserLists, UserListJoinings } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーリストに指定したユーザーを追加します。',
-		'en-US': 'Add a user to a user list.'
-	},
-
 	tags: ['lists', 'users'],
 
 	requireCredential: true as const,
@@ -25,10 +20,6 @@ export const meta = {
 
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/lists/show.ts b/src/server/api/endpoints/users/lists/show.ts
index aee1c13dee8db846eed12062fc30e4b53bb8c8cf..ff9ed001f715bf41b714c55e6c770860d371633b 100644
--- a/src/server/api/endpoints/users/lists/show.ts
+++ b/src/server/api/endpoints/users/lists/show.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../error';
 import { UserLists } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーリストの情報を取得します。',
-		'en-US': 'Show a user list.'
-	},
-
 	tags: ['lists', 'account'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/users/lists/update.ts b/src/server/api/endpoints/users/lists/update.ts
index 342791e5f3bc8eca9f340c4659a28831b6bf935d..eaa420a5b968904402cdd850e989ab78d576ad90 100644
--- a/src/server/api/endpoints/users/lists/update.ts
+++ b/src/server/api/endpoints/users/lists/update.ts
@@ -5,11 +5,6 @@ import { ApiError } from '../../../error';
 import { UserLists } from '../../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーリストを更新します。',
-		'en-US': 'Update a user list'
-	},
-
 	tags: ['lists'],
 
 	requireCredential: true as const,
@@ -19,18 +14,10 @@ export const meta = {
 	params: {
 		listId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象となるユーザーリストのID',
-				'en-US': 'ID of target user list'
-			}
 		},
 
 		name: {
 			validator: $.str.range(1, 100),
-			desc: {
-				'ja-JP': 'このユーザーリストの名前',
-				'en-US': 'name of this user list'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts
index b886756c025b0a254611969ef0be60f7de2c491f..55f07e390b6851662e0cbae3109c2558613adfe3 100644
--- a/src/server/api/endpoints/users/notes.ts
+++ b/src/server/api/endpoints/users/notes.ts
@@ -10,95 +10,56 @@ import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
 import { Brackets } from 'typeorm';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーのタイムラインを取得します。'
-	},
-
 	tags: ['users', 'notes'],
 
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		includeReplies: {
 			validator: $.optional.bool,
 			default: true,
-
-			desc: {
-				'ja-JP': 'リプライを含めるか否か'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '最大数'
-			}
 		},
 
 		sinceId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより新しい投稿を取得します'
-			}
 		},
 
 		untilId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '指定すると、その投稿を基点としてより古い投稿を取得します'
-			}
 		},
 
 		sinceDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		untilDate: {
 			validator: $.optional.num,
-			desc: {
-				'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
-			}
 		},
 
 		includeMyRenotes: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': 'Renoteを含めるかどうか'
-			}
 		},
 
 		withFiles: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
-			}
 		},
 
 		fileType: {
 			validator: $.optional.arr($.str),
-			desc: {
-				'ja-JP': '指定された種類のファイルが添付された投稿のみを取得します'
-			}
 		},
 
 		excludeNsfw: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': 'true にすると、NSFW指定されたファイルを除外します(fileTypeが指定されている場合のみ有効)'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/recommendation.ts b/src/server/api/endpoints/users/recommendation.ts
index 7f80b52753bd17471e205962824a0254a5575e74..7c269268bfae2953ac518e84d8f9b30b755bf4ba 100644
--- a/src/server/api/endpoints/users/recommendation.ts
+++ b/src/server/api/endpoints/users/recommendation.ts
@@ -6,10 +6,6 @@ import { generateMutedUserQueryForUsers } from '../../common/generate-muted-user
 import { generateBlockQueryForUsers } from '../../common/generate-block-query';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'おすすめのユーザー一覧を取得します。'
-	},
-
 	tags: ['users'],
 
 	requireCredential: true as const,
diff --git a/src/server/api/endpoints/users/relation.ts b/src/server/api/endpoints/users/relation.ts
index fc294eb64dc2a4bdf340c74ffa698ac4889afab7..18ec5d44b3f051edfdecfbf53548386590ec8eaf 100644
--- a/src/server/api/endpoints/users/relation.ts
+++ b/src/server/api/endpoints/users/relation.ts
@@ -4,10 +4,6 @@ import { ID } from '@/misc/cafy-id';
 import { Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザー間のリレーションを取得します。'
-	},
-
 	tags: ['users'],
 
 	requireCredential: true as const,
@@ -15,9 +11,6 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.either($.type(ID), $.arr($.type(ID)).unique()),
-			desc: {
-				'ja-JP': 'ユーザーID (配列でも可)'
-			}
 		}
 	},
 
diff --git a/src/server/api/endpoints/users/report-abuse.ts b/src/server/api/endpoints/users/report-abuse.ts
index 671eca02986a326967152fe129356f3b8d18b156..776d683700f30b1417b291e000e7182df3e73418 100644
--- a/src/server/api/endpoints/users/report-abuse.ts
+++ b/src/server/api/endpoints/users/report-abuse.ts
@@ -8,10 +8,6 @@ import { AbuseUserReports, Users } from '../../../../models';
 import { genId } from '@/misc/gen-id';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーを迷惑なユーザーであると報告します。'
-	},
-
 	tags: ['users'],
 
 	requireCredential: true as const,
@@ -19,17 +15,10 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		comment: {
 			validator: $.str.range(1, 2048),
-			desc: {
-				'ja-JP': '迷惑行為の詳細'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/search-by-username-and-host.ts b/src/server/api/endpoints/users/search-by-username-and-host.ts
index 8e436ddb9ec93bc33057aa29fe349cfd86e0dd82..13c5a18dbe41396402464722e5840f73147e2605 100644
--- a/src/server/api/endpoints/users/search-by-username-and-host.ts
+++ b/src/server/api/endpoints/users/search-by-username-and-host.ts
@@ -3,10 +3,6 @@ import define from '../../define';
 import { Users } from '../../../../models';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーを検索します。'
-	},
-
 	tags: ['users'],
 
 	requireCredential: false as const,
@@ -14,40 +10,25 @@ export const meta = {
 	params: {
 		username: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'クエリ'
-			}
 		},
 
 		host: {
 			validator: $.optional.nullable.str,
-			desc: {
-				'ja-JP': 'クエリ'
-			}
 		},
 
 		offset: {
 			validator: $.optional.num.min(0),
 			default: 0,
-			desc: {
-				'ja-JP': 'オフセット'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '取得する数'
-			}
 		},
 
 		detail: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': '詳細なユーザー情報を含めるか否か'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/search.ts b/src/server/api/endpoints/users/search.ts
index 528c6ac883f6c1c2990be4461667bb4aefac3db3..c183194c41741e8f6c4347f685831b1aba282f3c 100644
--- a/src/server/api/endpoints/users/search.ts
+++ b/src/server/api/endpoints/users/search.ts
@@ -4,10 +4,6 @@ import { UserProfiles, Users } from '../../../../models';
 import { User } from '../../../../models/entities/user';
 
 export const meta = {
-	desc: {
-		'ja-JP': 'ユーザーを検索します。'
-	},
-
 	tags: ['users'],
 
 	requireCredential: false as const,
@@ -15,41 +11,26 @@ export const meta = {
 	params: {
 		query: {
 			validator: $.str,
-			desc: {
-				'ja-JP': 'クエリ'
-			}
 		},
 
 		offset: {
 			validator: $.optional.num.min(0),
 			default: 0,
-			desc: {
-				'ja-JP': 'オフセット'
-			}
 		},
 
 		limit: {
 			validator: $.optional.num.range(1, 100),
 			default: 10,
-			desc: {
-				'ja-JP': '取得する数'
-			}
 		},
 
 		localOnly: {
 			validator: $.optional.bool,
 			default: false,
-			desc: {
-				'ja-JP': 'ローカルユーザーのみ検索対象にするか否か'
-			}
 		},
 
 		detail: {
 			validator: $.optional.bool,
 			default: true,
-			desc: {
-				'ja-JP': '詳細なユーザー情報を含めるか否か'
-			}
 		},
 	},
 
diff --git a/src/server/api/endpoints/users/show.ts b/src/server/api/endpoints/users/show.ts
index 11d36d2ae98a8801364562308c34474adbac5f07..fde2b5a14d33ed041b576b81ca540b1048498248 100644
--- a/src/server/api/endpoints/users/show.ts
+++ b/src/server/api/endpoints/users/show.ts
@@ -9,10 +9,6 @@ import { In } from 'typeorm';
 import { User } from '@/models/entities/user';
 
 export const meta = {
-	desc: {
-		'ja-JP': '指定したユーザーの情報を取得します。'
-	},
-
 	tags: ['users'],
 
 	requireCredential: false as const,
@@ -20,17 +16,10 @@ export const meta = {
 	params: {
 		userId: {
 			validator: $.optional.type(ID),
-			desc: {
-				'ja-JP': '対象のユーザーのID',
-				'en-US': 'Target user ID'
-			}
 		},
 
 		userIds: {
 			validator: $.optional.arr($.type(ID)).unique(),
-			desc: {
-				'ja-JP': 'ユーザーID (配列)'
-			}
 		},
 
 		username: {
diff --git a/src/services/chart/charts/schemas/active-users.ts b/src/services/chart/charts/schemas/active-users.ts
index cdf0579efb6adc36147d42664d00e8563d4639d7..1d65f280b001b88059bc8e42622ce626f59e8d8f 100644
--- a/src/services/chart/charts/schemas/active-users.ts
+++ b/src/services/chart/charts/schemas/active-users.ts
@@ -5,7 +5,6 @@ export const logSchema = {
 	users: {
 		type: 'array' as const,
 		optional: false as const, nullable: false as const,
-		description: 'アクティブユーザー',
 		items: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
diff --git a/src/services/chart/charts/schemas/drive.ts b/src/services/chart/charts/schemas/drive.ts
index dcc50df8cf984786a402f7f6bad72bd7d08136d0..133b47846a18ed1152140d128095c1845b1f8a70 100644
--- a/src/services/chart/charts/schemas/drive.ts
+++ b/src/services/chart/charts/schemas/drive.ts
@@ -5,7 +5,6 @@ const logSchema = {
 	totalCount: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '集計期間時点での、全ドライブファイル数'
 	},
 
 	/**
@@ -14,7 +13,6 @@ const logSchema = {
 	totalSize: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '集計期間時点での、全ドライブファイルの合計サイズ'
 	},
 
 	/**
@@ -23,7 +21,6 @@ const logSchema = {
 	incCount: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '増加したドライブファイル数'
 	},
 
 	/**
@@ -32,7 +29,6 @@ const logSchema = {
 	incSize: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '増加したドライブ使用量'
 	},
 
 	/**
@@ -41,7 +37,6 @@ const logSchema = {
 	decCount: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '減少したドライブファイル数'
 	},
 
 	/**
@@ -50,7 +45,6 @@ const logSchema = {
 	decSize: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '減少したドライブ使用量'
 	},
 };
 
diff --git a/src/services/chart/charts/schemas/federation.ts b/src/services/chart/charts/schemas/federation.ts
index 2f2d22c0d385f17760df16ed91bbeb02ed22e1b3..dca4587cacbd98d33f6097e304ba2096443cdd7b 100644
--- a/src/services/chart/charts/schemas/federation.ts
+++ b/src/services/chart/charts/schemas/federation.ts
@@ -12,17 +12,14 @@ export const schema = {
 				total: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: 'インスタンス数の合計'
 				},
 				inc: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '増加インスタンス数'
 				},
 				dec: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '減少インスタンス数'
 				},
 			}
 		}
diff --git a/src/services/chart/charts/schemas/hashtag.ts b/src/services/chart/charts/schemas/hashtag.ts
index 791d0d17217a1294e122d346915cdd7a4ecbacee..4e7c542bbcab06375a70db5c5f9988751adb5d2b 100644
--- a/src/services/chart/charts/schemas/hashtag.ts
+++ b/src/services/chart/charts/schemas/hashtag.ts
@@ -5,7 +5,6 @@ export const logSchema = {
 	users: {
 		type: 'array' as const,
 		optional: false as const, nullable: false as const,
-		description: '投稿したユーザー',
 		items: {
 			type: 'string' as const,
 			optional: false as const, nullable: false as const,
diff --git a/src/services/chart/charts/schemas/instance.ts b/src/services/chart/charts/schemas/instance.ts
index d2152a4ae7b5651afc4a8e3652a0720dda3dc37a..785d6ae7ce9a8b181114f28cb081477c83266332 100644
--- a/src/services/chart/charts/schemas/instance.ts
+++ b/src/services/chart/charts/schemas/instance.ts
@@ -12,17 +12,14 @@ export const schema = {
 				failed: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '失敗したリクエスト数'
 				},
 				succeeded: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '成功したリクエスト数'
 				},
 				received: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '受信したリクエスト数'
 				},
 			}
 		},
@@ -34,17 +31,14 @@ export const schema = {
 				total: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '集計期間時点での、全投稿数'
 				},
 				inc: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '増加した投稿数'
 				},
 				dec: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '減少した投稿数'
 				},
 
 				diffs: {
@@ -54,19 +48,16 @@ export const schema = {
 						normal: {
 							type: 'number' as const,
 							optional: false as const, nullable: false as const,
-							description: '通常の投稿数の差分'
 						},
 
 						reply: {
 							type: 'number' as const,
 							optional: false as const, nullable: false as const,
-							description: 'リプライの投稿数の差分'
 						},
 
 						renote: {
 							type: 'number' as const,
 							optional: false as const, nullable: false as const,
-							description: 'Renoteの投稿数の差分'
 						},
 					}
 				},
@@ -80,17 +71,14 @@ export const schema = {
 				total: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '集計期間時点での、全ユーザー数'
 				},
 				inc: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '増加したユーザー数'
 				},
 				dec: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '減少したユーザー数'
 				},
 			}
 		},
@@ -102,17 +90,14 @@ export const schema = {
 				total: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '集計期間時点での、全フォロー数'
 				},
 				inc: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '増加したフォロー数'
 				},
 				dec: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '減少したフォロー数'
 				},
 			}
 		},
@@ -124,17 +109,14 @@ export const schema = {
 				total: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '集計期間時点での、全フォロワー数'
 				},
 				inc: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '増加したフォロワー数'
 				},
 				dec: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '減少したフォロワー数'
 				},
 			}
 		},
@@ -146,32 +128,26 @@ export const schema = {
 				totalFiles: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '集計期間時点での、全ドライブファイル数'
 				},
 				totalUsage: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '集計期間時点での、全ドライブファイルの合計サイズ'
 				},
 				incFiles: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '増加したドライブファイル数'
 				},
 				incUsage: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '増加したドライブ使用量'
 				},
 				decFiles: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '減少したドライブファイル数'
 				},
 				decUsage: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '減少したドライブ使用量'
 				},
 			}
 		},
diff --git a/src/services/chart/charts/schemas/network.ts b/src/services/chart/charts/schemas/network.ts
index 30123c5d904d304a06f9dbdb2664dc3f3a854d9c..49a364debc0eee7d1f6552d90794ac8f7c61ef25 100644
--- a/src/services/chart/charts/schemas/network.ts
+++ b/src/services/chart/charts/schemas/network.ts
@@ -8,27 +8,22 @@ export const schema = {
 		incomingRequests: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '受信したリクエスト数'
 		},
 		outgoingRequests: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '送信したリクエスト数'
 		},
-		totalTime: {
+		totalTime: { // TIP: (totalTime / incomingRequests) でひとつのリクエストに平均でどれくらいの時間がかかったか知れる
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '応答時間の合計' // TIP: (totalTime / incomingRequests) でひとつのリクエストに平均でどれくらいの時間がかかったか知れる
 		},
 		incomingBytes: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '合計受信データ量'
 		},
 		outgoingBytes: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '合計送信データ量'
 		},
 	}
 };
diff --git a/src/services/chart/charts/schemas/notes.ts b/src/services/chart/charts/schemas/notes.ts
index 6dbf321b7c2e67779a2050e824e9b7c80fe94a52..2b5105348c8e96fa2e559f25e41bb13f1f5b8ace 100644
--- a/src/services/chart/charts/schemas/notes.ts
+++ b/src/services/chart/charts/schemas/notes.ts
@@ -2,19 +2,16 @@ const logSchema = {
 	total: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '集計期間時点での、全投稿数'
 	},
 
 	inc: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '増加した投稿数'
 	},
 
 	dec: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '減少した投稿数'
 	},
 
 	diffs: {
@@ -24,19 +21,16 @@ const logSchema = {
 			normal: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: '通常の投稿数の差分'
 			},
 
 			reply: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'リプライの投稿数の差分'
 			},
 
 			renote: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'Renoteの投稿数の差分'
 			},
 		}
 	},
diff --git a/src/services/chart/charts/schemas/per-user-drive.ts b/src/services/chart/charts/schemas/per-user-drive.ts
index 21312e82d8751d82211b414c66e1012a81e9ec4a..856f1e04390e10bdef6ce84314ae08c39fc6c009 100644
--- a/src/services/chart/charts/schemas/per-user-drive.ts
+++ b/src/services/chart/charts/schemas/per-user-drive.ts
@@ -8,7 +8,6 @@ export const schema = {
 		totalCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '集計期間時点での、全ドライブファイル数'
 		},
 
 		/**
@@ -17,7 +16,6 @@ export const schema = {
 		totalSize: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '集計期間時点での、全ドライブファイルの合計サイズ'
 		},
 
 		/**
@@ -26,7 +24,6 @@ export const schema = {
 		incCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '増加したドライブファイル数'
 		},
 
 		/**
@@ -35,7 +32,6 @@ export const schema = {
 		incSize: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '増加したドライブ使用量'
 		},
 
 		/**
@@ -44,7 +40,6 @@ export const schema = {
 		decCount: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '減少したドライブファイル数'
 		},
 
 		/**
@@ -53,7 +48,6 @@ export const schema = {
 		decSize: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '減少したドライブ使用量'
 		},
 	}
 };
diff --git a/src/services/chart/charts/schemas/per-user-following.ts b/src/services/chart/charts/schemas/per-user-following.ts
index dffd9c2572170c21b2efd018c082e154df84b25a..eaf74aaf7783ee3bea580e8207596cc243c76425 100644
--- a/src/services/chart/charts/schemas/per-user-following.ts
+++ b/src/services/chart/charts/schemas/per-user-following.ts
@@ -12,7 +12,6 @@ export const logSchema = {
 			total: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'フォローしている合計',
 			},
 
 			/**
@@ -21,7 +20,6 @@ export const logSchema = {
 			inc: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'フォローした数',
 			},
 
 			/**
@@ -30,7 +28,6 @@ export const logSchema = {
 			dec: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'フォロー解除した数',
 			},
 		}
 	},
@@ -48,7 +45,6 @@ export const logSchema = {
 			total: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'フォローされている合計',
 			},
 
 			/**
@@ -57,7 +53,6 @@ export const logSchema = {
 			inc: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'フォローされた数',
 			},
 
 			/**
@@ -66,7 +61,6 @@ export const logSchema = {
 			dec: {
 				type: 'number' as const,
 				optional: false as const, nullable: false as const,
-				description: 'フォロー解除された数',
 			},
 		}
 	},
diff --git a/src/services/chart/charts/schemas/per-user-notes.ts b/src/services/chart/charts/schemas/per-user-notes.ts
index 778f498c6e824552dade33573d7a2e5ded50e560..72b3ff02103dc76b5e13fce0a1dc3c83f6922da7 100644
--- a/src/services/chart/charts/schemas/per-user-notes.ts
+++ b/src/services/chart/charts/schemas/per-user-notes.ts
@@ -5,19 +5,16 @@ export const schema = {
 		total: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '集計期間時点での、全投稿数'
 		},
 
 		inc: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '増加した投稿数'
 		},
 
 		dec: {
 			type: 'number' as const,
 			optional: false as const, nullable: false as const,
-			description: '減少した投稿数'
 		},
 
 		diffs: {
@@ -27,19 +24,16 @@ export const schema = {
 				normal: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: '通常の投稿数の差分'
 				},
 
 				reply: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: 'リプライの投稿数の差分'
 				},
 
 				renote: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: 'Renoteの投稿数の差分'
 				},
 			}
 		},
diff --git a/src/services/chart/charts/schemas/per-user-reactions.ts b/src/services/chart/charts/schemas/per-user-reactions.ts
index d103124ccba189559d70974b686e4c77ebf5ce0b..2a8520db37e8abb0cc9c591698bb8184d74d8c51 100644
--- a/src/services/chart/charts/schemas/per-user-reactions.ts
+++ b/src/services/chart/charts/schemas/per-user-reactions.ts
@@ -5,7 +5,6 @@ export const logSchema = {
 	count: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: 'リアクションされた数',
 	},
 };
 
diff --git a/src/services/chart/charts/schemas/test-grouped.ts b/src/services/chart/charts/schemas/test-grouped.ts
index 163ec5bba3773ed946081727ace1956fbe28ac2c..f8c8250e79f0d0f3dbdb57b058352af377ead5be 100644
--- a/src/services/chart/charts/schemas/test-grouped.ts
+++ b/src/services/chart/charts/schemas/test-grouped.ts
@@ -9,19 +9,16 @@ export const schema = {
 				total: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: ''
 				},
 
 				inc: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: ''
 				},
 
 				dec: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: ''
 				},
 			}
 		}
diff --git a/src/services/chart/charts/schemas/test.ts b/src/services/chart/charts/schemas/test.ts
index 6142434a89cc205eac948176fe3a0134f5d7d01b..4b48d4d4178a95a669bb8a9b9c8ce8cf8dc3faa7 100644
--- a/src/services/chart/charts/schemas/test.ts
+++ b/src/services/chart/charts/schemas/test.ts
@@ -9,19 +9,16 @@ export const schema = {
 				total: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: ''
 				},
 
 				inc: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: ''
 				},
 
 				dec: {
 					type: 'number' as const,
 					optional: false as const, nullable: false as const,
-					description: ''
 				},
 			}
 		}
diff --git a/src/services/chart/charts/schemas/users.ts b/src/services/chart/charts/schemas/users.ts
index 11533699836237f8da6f0fa73fdbaa1c2339c284..2bf9d3c50fb3a3c2bca3640ac88e221fce67fb2c 100644
--- a/src/services/chart/charts/schemas/users.ts
+++ b/src/services/chart/charts/schemas/users.ts
@@ -5,7 +5,6 @@ const logSchema = {
 	total: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '集計期間時点での、全ユーザー数'
 	},
 
 	/**
@@ -14,7 +13,6 @@ const logSchema = {
 	inc: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '増加したユーザー数'
 	},
 
 	/**
@@ -23,7 +21,6 @@ const logSchema = {
 	dec: {
 		type: 'number' as const,
 		optional: false as const, nullable: false as const,
-		description: '減少したユーザー数'
 	},
 };
 
diff --git a/src/tools/resync-remote-user.ts b/src/tools/resync-remote-user.ts
index 9897cba9f8e1badae36e1afc6369761d3f5f1922..d9685ee4b72d92e1987900d723336e9f815487cc 100644
--- a/src/tools/resync-remote-user.ts
+++ b/src/tools/resync-remote-user.ts
@@ -1,7 +1,10 @@
+import { initDb } from '@/db/postgre';
 import parseAcct from '@/misc/acct/parse';
-import { resolveUser } from '../remote/resolve-user';
 
 async function main(acct: string): Promise<any> {
+	await initDb();
+	const { resolveUser } = await import('../remote/resolve-user');
+
 	const { username, host } = parseAcct(acct);
 	await resolveUser(username, host, {}, true);
 }
diff --git a/test/api-visibility.ts b/test/api-visibility.ts
index 5fbea02df6cc1051155529caf57f2c78ec846c01..c4ec3219385d7ba38f74219d80bd934366eca6f9 100644
--- a/test/api-visibility.ts
+++ b/test/api-visibility.ts
@@ -12,15 +12,15 @@ process.env.NODE_ENV = 'test';
 
 import * as assert from 'assert';
 import * as childProcess from 'child_process';
-import { async, signup, request, post, launchServer } from './utils';
+import { async, signup, request, post, launchServer, shutdownServer } from './utils';
 
 describe('API visibility', () => {
 	let p: childProcess.ChildProcess;
 
 	before(launchServer(g => p = g));
 
-	after(() => {
-		p.kill();
+	after(async () => {
+		await shutdownServer(p);
 	});
 
 	describe('Note visibility', async () => {
diff --git a/test/fetch-resource.ts b/test/fetch-resource.ts
index 79a5519ddb6b159aa4dfb1070fa8ec4fc7aa2f12..e9d10d1ab328ecace686aa34766096b5eee76d70 100644
--- a/test/fetch-resource.ts
+++ b/test/fetch-resource.ts
@@ -12,7 +12,7 @@ process.env.NODE_ENV = 'test';
 
 import * as assert from 'assert';
 import * as childProcess from 'child_process';
-import { async, launchServer, signup, post, request, simpleGet, port } from './utils';
+import { async, launchServer, signup, post, request, simpleGet, port, shutdownServer } from './utils';
 import * as openapi from '@redocly/openapi-core';
 
 // Request Accept
@@ -39,8 +39,8 @@ describe('Fetch resource', () => {
 		});
 	}));
 
-	after(() => {
-		p.kill();
+	after(async () => {
+		await shutdownServer(p);
 	});
 
 	describe('Common', () => {
diff --git a/test/mute.ts b/test/mute.ts
index 37b4a23048ecad65655c53aee029db20a4b9f906..38911b6e167d071f392edf437e70355856acc99c 100644
--- a/test/mute.ts
+++ b/test/mute.ts
@@ -12,7 +12,7 @@ process.env.NODE_ENV = 'test';
 
 import * as assert from 'assert';
 import * as childProcess from 'child_process';
-import { async, signup, request, post, react, connectStream, launchServer } from './utils';
+import { async, signup, request, post, react, connectStream, launchServer, shutdownServer } from './utils';
 
 describe('Mute', () => {
 	let p: childProcess.ChildProcess;
@@ -28,8 +28,8 @@ describe('Mute', () => {
 		carol = await signup({ username: 'carol' });
 	}));
 
-	after(() => {
-		p.kill();
+	after(async () => {
+		await shutdownServer(p);
 	});
 
 	it('ミュート作成', async(async () => {
diff --git a/test/note.ts b/test/note.ts
index 70ebecff1cb9b2c81bc331cdc14eafb39e157c8d..3f1700577118b78272caef593ae0b7868a0dcd22 100644
--- a/test/note.ts
+++ b/test/note.ts
@@ -12,7 +12,7 @@ process.env.NODE_ENV = 'test';
 
 import * as assert from 'assert';
 import * as childProcess from 'child_process';
-import { async, signup, request, post, uploadFile, launchServer } from './utils';
+import { async, signup, request, post, uploadFile, launchServer, shutdownServer } from './utils';
 import { Note } from '../src/models/entities/note';
 import { initDb } from '../src/db/postgre';
 
@@ -30,8 +30,8 @@ describe('Note', () => {
 		bob = await signup({ username: 'bob' });
 	}));
 
-	after(() => {
-		p.kill();
+	after(async () => {
+		await shutdownServer(p);
 	});
 
 	it('投稿できる', async(async () => {
diff --git a/test/user-notes.ts b/test/user-notes.ts
index 349d5fdb7ca410f6030c80d2c1cc774aed639e6e..4af8ce0cc71cc3362c838996397b442306dc6423 100644
--- a/test/user-notes.ts
+++ b/test/user-notes.ts
@@ -12,7 +12,7 @@ process.env.NODE_ENV = 'test';
 
 import * as assert from 'assert';
 import * as childProcess from 'child_process';
-import { async, signup, request, post, uploadFile, launchServer } from './utils';
+import { async, signup, request, post, uploadFile, launchServer, shutdownServer } from './utils';
 
 describe('users/notes', () => {
 	let p: childProcess.ChildProcess;
@@ -37,8 +37,8 @@ describe('users/notes', () => {
 		});
 	}));
 
-	after(() => {
-		p.kill();
+	after(async() => {
+		await shutdownServer(p);
 	});
 
 	it('ファイルタイプ指定 (jpg)', async(async () => {
diff --git a/test/utils.ts b/test/utils.ts
index 193017e265d28bd06769d3995753c9e424c45ae2..e4c96d0e157ab683fa019f1d456bd927b0231a3b 100644
--- a/test/utils.ts
+++ b/test/utils.ts
@@ -5,6 +5,7 @@ const FormData = require('form-data');
 import * as childProcess from 'child_process';
 import * as http from 'http';
 import loadConfig from '../src/config/load';
+import { SIGKILL } from 'constants';
 
 export const port = loadConfig().port;
 
@@ -145,3 +146,19 @@ export function launchServer(callbackSpawnedProcess: (p: childProcess.ChildProce
 		});
 	};
 }
+
+export function shutdownServer(p: childProcess.ChildProcess, timeout = 20 * 1000) {
+	return new Promise((res, rej) => {
+		const t = setTimeout(() => {
+			p.kill(SIGKILL);
+			res('force exit');
+		}, timeout);
+
+		p.once('exit', () => {
+			clearTimeout(t);
+			res('exited');
+		});
+
+		p.kill();
+	});
+}
diff --git a/yarn.lock b/yarn.lock
index 2d9284c4ccc026118b4e69799953ce8dc2816bce..2e0a3e2d9a419e559cec3645b0fd5e694148ced1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -212,15 +212,15 @@
     pump "^3.0.0"
     secure-json-parse "^2.1.0"
 
-"@eslint/eslintrc@^0.4.1":
-  version "0.4.1"
-  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14"
-  integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ==
+"@eslint/eslintrc@^0.4.2":
+  version "0.4.2"
+  resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179"
+  integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==
   dependencies:
     ajv "^6.12.4"
     debug "^4.1.1"
     espree "^7.3.0"
-    globals "^12.1.0"
+    globals "^13.9.0"
     ignore "^4.0.6"
     import-fresh "^3.2.1"
     js-yaml "^3.13.1"
@@ -754,10 +754,10 @@
   dependencies:
     "@types/node" "*"
 
-"@types/koa-bodyparser@4.3.0":
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/@types/koa-bodyparser/-/koa-bodyparser-4.3.0.tgz#54ecd662c45f3a4fa9de849528de5fc8ab269ba5"
-  integrity sha512-aB/vwwq4G9FAtKzqZ2p8UHTscXxZvICFKVjuckqxCtkX1Ro7F5KHkTCUqTRZFBgDoEkmeca+bFLI1bIsdPPZTA==
+"@types/koa-bodyparser@4.3.1":
+  version "4.3.1"
+  resolved "https://registry.yarnpkg.com/@types/koa-bodyparser/-/koa-bodyparser-4.3.1.tgz#ec2e06f6f50cfddba035d33a3cfe75a8f0cd7fa4"
+  integrity sha512-N1cw6UpYYW01rGanfC0guqkyqKKavXygGBeSgsJOe7EkkSlRH7BNRjzyqv1TzJ3Au69aNeagpzzqAzTo6I08ow==
   dependencies:
     "@types/koa" "*"
 
@@ -864,10 +864,10 @@
   resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-2.1.0.tgz#ea3dd64c4805597311790b61e872cbd1ed2cd806"
   integrity sha512-Q7DYAOi9O/+cLLhdaSvKdaumWyHbm7HAk/bFwwyTuU0arR5yyCeW5GOoqt4tJTpDRxhpx9Q8kQL6vMpuw9hDSw==
 
-"@types/markdown-it@12.0.1":
-  version "12.0.1"
-  resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.0.1.tgz#8391e19fea4796ff863edda55800c7e669beb358"
-  integrity sha512-mHfT8j/XkPb1uLEfs0/C3se6nd+webC2kcqcy8tgcVr0GDEONv/xaQzAN+aQvkxQXk/jC0Q6mPS+0xhFwRF35g==
+"@types/markdown-it@12.0.2":
+  version "12.0.2"
+  resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.0.2.tgz#153e5477970ed2a47b2f619ed4ab66f870de8a04"
+  integrity sha512-p4DIfLMmGN0iLSbMxknDXeSm8W2ZRqQeN/1EAwVxVqJietzgp3WeP1UQjCKWDXWBcEbUa1ECx8YAfdpQdDQmZQ==
   dependencies:
     "@types/highlight.js" "^9.7.0"
     "@types/linkify-it" "*"
@@ -911,10 +911,10 @@
   resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055"
   integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==
 
-"@types/node@15.6.1":
-  version "15.6.1"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.1.tgz#32d43390d5c62c5b6ec486a9bc9c59544de39a08"
-  integrity sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA==
+"@types/node@15.12.2":
+  version "15.12.2"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.2.tgz#1f2b42c4be7156ff4a6f914b2fb03d05fa84e38d"
+  integrity sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==
 
 "@types/node@^14.11.8":
   version "14.14.44"
@@ -1072,10 +1072,10 @@
     "@types/express-serve-static-core" "*"
     "@types/mime" "*"
 
-"@types/sharp@0.28.2":
-  version "0.28.2"
-  resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.28.2.tgz#75bb9f60714ed752dc88c477ef55310f17c2f08f"
-  integrity sha512-xXanJalZA3EVSZ49667lBctyao75JiH5tD5/hKYu9u5C3d9rxEqOHvMOtx/oenJUqKKgIwIZEsL0hjmKo2rjJg==
+"@types/sharp@0.28.3":
+  version "0.28.3"
+  resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.28.3.tgz#0e57ede34d3e334632ab7a68a6af070aa0f51ceb"
+  integrity sha512-y3mxUj3jukIWgdu9CrSTSCo5HruTzDxdjn5SqdIEALdTszkcot9r8HX/7q9FMx3YjuXifTD0OI+d4wA6Pogqmw==
   dependencies:
     "@types/node" "*"
 
@@ -1226,48 +1226,48 @@
   resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71"
   integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg==
 
-"@typescript-eslint/parser@4.25.0":
-  version "4.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.25.0.tgz#6b2cb6285aa3d55bfb263c650739091b0f19aceb"
-  integrity sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==
+"@typescript-eslint/parser@4.26.1":
+  version "4.26.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.26.1.tgz#cecfdd5eb7a5c13aabce1c1cfd7fbafb5a0f1e8e"
+  integrity sha512-q7F3zSo/nU6YJpPJvQveVlIIzx9/wu75lr6oDbDzoeIRWxpoc/HQ43G4rmMoCc5my/3uSj2VEpg/D83LYZF5HQ==
   dependencies:
-    "@typescript-eslint/scope-manager" "4.25.0"
-    "@typescript-eslint/types" "4.25.0"
-    "@typescript-eslint/typescript-estree" "4.25.0"
-    debug "^4.1.1"
+    "@typescript-eslint/scope-manager" "4.26.1"
+    "@typescript-eslint/types" "4.26.1"
+    "@typescript-eslint/typescript-estree" "4.26.1"
+    debug "^4.3.1"
 
-"@typescript-eslint/scope-manager@4.25.0":
-  version "4.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.25.0.tgz#9d86a5bcc46ef40acd03d85ad4e908e5aab8d4ca"
-  integrity sha512-2NElKxMb/0rya+NJG1U71BuNnp1TBd1JgzYsldsdA83h/20Tvnf/HrwhiSlNmuq6Vqa0EzidsvkTArwoq+tH6w==
+"@typescript-eslint/scope-manager@4.26.1":
+  version "4.26.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.26.1.tgz#075a74a15ff33ee3a7ed33e5fce16ee86689f662"
+  integrity sha512-TW1X2p62FQ8Rlne+WEShyd7ac2LA6o27S9i131W4NwDSfyeVlQWhw8ylldNNS8JG6oJB9Ha9Xyc+IUcqipvheQ==
   dependencies:
-    "@typescript-eslint/types" "4.25.0"
-    "@typescript-eslint/visitor-keys" "4.25.0"
+    "@typescript-eslint/types" "4.26.1"
+    "@typescript-eslint/visitor-keys" "4.26.1"
 
-"@typescript-eslint/types@4.25.0":
-  version "4.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.25.0.tgz#0e444a5c5e3c22d7ffa5e16e0e60510b3de5af87"
-  integrity sha512-+CNINNvl00OkW6wEsi32wU5MhHti2J25TJsJJqgQmJu3B3dYDBcmOxcE5w9cgoM13TrdE/5ND2HoEnBohasxRQ==
+"@typescript-eslint/types@4.26.1":
+  version "4.26.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.26.1.tgz#9e7c523f73c34b04a765e4167ca5650436ef1d38"
+  integrity sha512-STyMPxR3cS+LaNvS8yK15rb8Y0iL0tFXq0uyl6gY45glyI7w0CsyqyEXl/Fa0JlQy+pVANeK3sbwPneCbWE7yg==
 
-"@typescript-eslint/typescript-estree@4.25.0":
-  version "4.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.25.0.tgz#942e4e25888736bff5b360d9b0b61e013d0cfa25"
-  integrity sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==
+"@typescript-eslint/typescript-estree@4.26.1":
+  version "4.26.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.26.1.tgz#b2ce2e789233d62283fae2c16baabd4f1dbc9633"
+  integrity sha512-l3ZXob+h0NQzz80lBGaykdScYaiEbFqznEs99uwzm8fPHhDjwaBFfQkjUC/slw6Sm7npFL8qrGEAMxcfBsBJUg==
   dependencies:
-    "@typescript-eslint/types" "4.25.0"
-    "@typescript-eslint/visitor-keys" "4.25.0"
-    debug "^4.1.1"
-    globby "^11.0.1"
+    "@typescript-eslint/types" "4.26.1"
+    "@typescript-eslint/visitor-keys" "4.26.1"
+    debug "^4.3.1"
+    globby "^11.0.3"
     is-glob "^4.0.1"
-    semver "^7.3.2"
-    tsutils "^3.17.1"
+    semver "^7.3.5"
+    tsutils "^3.21.0"
 
-"@typescript-eslint/visitor-keys@4.25.0":
-  version "4.25.0"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.25.0.tgz#863e7ed23da4287c5b469b13223255d0fde6aaa7"
-  integrity sha512-AmkqV9dDJVKP/TcZrbf6s6i1zYXt5Hl8qOLrRDTFfRNae4+LB8A4N3i+FLZPW85zIxRy39BgeWOfMS3HoH5ngg==
+"@typescript-eslint/visitor-keys@4.26.1":
+  version "4.26.1"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.26.1.tgz#0d55ea735cb0d8903b198017d6d4f518fdaac546"
+  integrity sha512-IGouNSSd+6x/fHtYRyLOM6/C+QxMDzWlDtN41ea+flWuSF9g02iqcIlX8wM53JkfljoIjP0U+yp7SiTS1onEkw==
   dependencies:
-    "@typescript-eslint/types" "4.25.0"
+    "@typescript-eslint/types" "4.26.1"
     eslint-visitor-keys "^2.0.0"
 
 "@ungap/promise-all-settled@1.1.2":
@@ -1275,36 +1275,36 @@
   resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
   integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
 
-"@vue/compiler-core@3.0.11":
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.0.11.tgz#5ef579e46d7b336b8735228758d1c2c505aae69a"
-  integrity sha512-6sFj6TBac1y2cWCvYCA8YzHJEbsVkX7zdRs/3yK/n1ilvRqcn983XvpBbnN3v4mZ1UiQycTvOiajJmOgN9EVgw==
+"@vue/compiler-core@3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.1.tgz#4f2c5d70eabd454675714cc8bd2b97f6a8efb196"
+  integrity sha512-Z1RO3T6AEtAUFf2EqqovFm3ohAeTvFzRtB0qUENW2nEerJfdlk13/LS1a0EgsqlzxmYfR/S/S/gW9PLbFZZxkA==
   dependencies:
     "@babel/parser" "^7.12.0"
     "@babel/types" "^7.12.0"
-    "@vue/shared" "3.0.11"
+    "@vue/shared" "3.1.1"
     estree-walker "^2.0.1"
     source-map "^0.6.1"
 
-"@vue/compiler-dom@3.0.11":
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.0.11.tgz#b15fc1c909371fd671746020ba55b5dab4a730ee"
-  integrity sha512-+3xB50uGeY5Fv9eMKVJs2WSRULfgwaTJsy23OIltKgMrynnIj8hTYY2UL97HCoz78aDw1VDXdrBQ4qepWjnQcw==
+"@vue/compiler-dom@3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.1.tgz#ef60d856ac2ede5b2ad5c72a7a68122895e3d652"
+  integrity sha512-nobRIo0t5ibzg+q8nC31m+aJhbq8FbWUoKvk6h3Vs1EqTDJaj6lBTcVTq5or8AYht7FbSpdAJ81isbJ1rWNX7A==
   dependencies:
-    "@vue/compiler-core" "3.0.11"
-    "@vue/shared" "3.0.11"
+    "@vue/compiler-core" "3.1.1"
+    "@vue/shared" "3.1.1"
 
-"@vue/compiler-sfc@3.0.11":
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.0.11.tgz#cd8ca2154b88967b521f5ad3b10f5f8b6b665679"
-  integrity sha512-7fNiZuCecRleiyVGUWNa6pn8fB2fnuJU+3AGjbjl7r1P5wBivfl02H4pG+2aJP5gh2u+0wXov1W38tfWOphsXw==
+"@vue/compiler-sfc@3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.1.tgz#d4e4507c013d0b219f0b106b317ec5bb1cde3398"
+  integrity sha512-lSgMsZaYHF+bAgryq5aUqpvyfhu52GJI2/4LoiJCE5uaxc6FCZfxfgqgw/d9ltiZghv+HiISFtmQVAVvlsk+/w==
   dependencies:
     "@babel/parser" "^7.13.9"
     "@babel/types" "^7.13.0"
-    "@vue/compiler-core" "3.0.11"
-    "@vue/compiler-dom" "3.0.11"
-    "@vue/compiler-ssr" "3.0.11"
-    "@vue/shared" "3.0.11"
+    "@vue/compiler-core" "3.1.1"
+    "@vue/compiler-dom" "3.1.1"
+    "@vue/compiler-ssr" "3.1.1"
+    "@vue/shared" "3.1.1"
     consolidate "^0.16.0"
     estree-walker "^2.0.1"
     hash-sum "^2.0.0"
@@ -1316,36 +1316,43 @@
     postcss-selector-parser "^6.0.4"
     source-map "^0.6.1"
 
-"@vue/compiler-ssr@3.0.11":
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.0.11.tgz#ac5a05fd1257412fa66079c823d8203b6a889a13"
-  integrity sha512-66yUGI8SGOpNvOcrQybRIhl2M03PJ+OrDPm78i7tvVln86MHTKhM3ERbALK26F7tXl0RkjX4sZpucCpiKs3MnA==
+"@vue/compiler-ssr@3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.1.tgz#1d08b98601397258ed059b75966e0e94a385d770"
+  integrity sha512-7H6krZtVt3h/YzfNp7eYK41hMDz8ZskiBy+Wby+EDRINX6BD9JQ5C8zyy2xAa7T6Iz2VrQzsaJ/Bb52lTPSS5A==
   dependencies:
-    "@vue/compiler-dom" "3.0.11"
-    "@vue/shared" "3.0.11"
+    "@vue/compiler-dom" "3.1.1"
+    "@vue/shared" "3.1.1"
+
+"@vue/reactivity@3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.1.tgz#9c02fd146a6c3b03e7d658b7cf76f4b69b0f98c8"
+  integrity sha512-DsH5woNVCcPK1M0RRYVgJEU1GJDU2ASOKpAqW3ppHk+XjoFLCbqc/26RTCgTpJYd9z8VN+79Q1u7/QqgQPbuLQ==
+  dependencies:
+    "@vue/shared" "3.1.1"
 
-"@vue/reactivity@3.0.11", "@vue/reactivity@^3.0.11":
+"@vue/reactivity@^3.0.11":
   version "3.0.11"
   resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.0.11.tgz#07b588349fd05626b17f3500cbef7d4bdb4dbd0b"
   integrity sha512-SKM3YKxtXHBPMf7yufXeBhCZ4XZDKP9/iXeQSC8bBO3ivBuzAi4aZi0bNoeE2IF2iGfP/AHEt1OU4ARj4ao/Xw==
   dependencies:
     "@vue/shared" "3.0.11"
 
-"@vue/runtime-core@3.0.11":
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.0.11.tgz#c52dfc6acf3215493623552c1c2919080c562e44"
-  integrity sha512-87XPNwHfz9JkmOlayBeCCfMh9PT2NBnv795DSbi//C/RaAnc/bGZgECjmkD7oXJ526BZbgk9QZBPdFT8KMxkAg==
+"@vue/runtime-core@3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.1.1.tgz#542110c09a643d7d80646a2f071aff6b324c4158"
+  integrity sha512-GboqR02txOtkd9F3Ysd8ltPL68vTCqIx2p/J52/gFtpgb5FG9hvOAPEwFUqxeEJRu7ResvQnmdOHiEycGPCLhQ==
   dependencies:
-    "@vue/reactivity" "3.0.11"
-    "@vue/shared" "3.0.11"
+    "@vue/reactivity" "3.1.1"
+    "@vue/shared" "3.1.1"
 
-"@vue/runtime-dom@3.0.11":
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.0.11.tgz#7a552df21907942721feb6961c418e222a699337"
-  integrity sha512-jm3FVQESY3y2hKZ2wlkcmFDDyqaPyU3p1IdAX92zTNeCH7I8zZ37PtlE1b9NlCtzV53WjB4TZAYh9yDCMIEumA==
+"@vue/runtime-dom@3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.1.1.tgz#5539bbce132d29f6445b4964cb7b4164a89a5ce6"
+  integrity sha512-o57n/199e/BBAmLRMSXmD2r12Old/h/gf6BgL0RON1NT2pwm6MWaMY4Ul55eyq+FsDILz4jR/UgoPQ9vYB8xcw==
   dependencies:
-    "@vue/runtime-core" "3.0.11"
-    "@vue/shared" "3.0.11"
+    "@vue/runtime-core" "3.1.1"
+    "@vue/shared" "3.1.1"
     csstype "^2.6.8"
 
 "@vue/shared@3.0.11":
@@ -1353,6 +1360,11 @@
   resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.0.11.tgz#20d22dd0da7d358bb21c17f9bde8628152642c77"
   integrity sha512-b+zB8A2so8eCE0JsxjL24J7vdGl8rzPQ09hZNhystm+KqSbKcAej1A+Hbva1rCMmTTqA+hFnUSDc5kouEo0JzA==
 
+"@vue/shared@3.1.1":
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.1.tgz#2287cfc3dc20e5b20aeb65c2c3a56533bdca801c"
+  integrity sha512-g+4pzAw7PYSjARtLBoDq6DmcblX8i9KJHSCnyM5VDDFFifUaUT9iHbFpOF/KOizQ9f7QAqU2JH3Y6aXjzUMhVA==
+
 "@webassemblyjs/ast@1.11.0":
   version "1.11.0"
   resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f"
@@ -1474,22 +1486,22 @@
     "@webassemblyjs/ast" "1.11.0"
     "@xtuc/long" "4.2.2"
 
-"@webpack-cli/configtest@^1.0.3":
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.3.tgz#204bcff87cda3ea4810881f7ea96e5f5321b87b9"
-  integrity sha512-WQs0ep98FXX2XBAfQpRbY0Ma6ADw8JR6xoIkaIiJIzClGOMqVRvPCWqndTxf28DgFopWan0EKtHtg/5W1h0Zkw==
+"@webpack-cli/configtest@^1.0.4":
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.4.tgz#f03ce6311c0883a83d04569e2c03c6238316d2aa"
+  integrity sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==
 
-"@webpack-cli/info@^1.2.4":
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.4.tgz#7381fd41c9577b2d8f6c2594fad397ef49ad5573"
-  integrity sha512-ogE2T4+pLhTTPS/8MM3IjHn0IYplKM4HbVNMCWA9N4NrdPzunwenpCsqKEXyejMfRu6K8mhauIPYf8ZxWG5O6g==
+"@webpack-cli/info@^1.3.0":
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.3.0.tgz#9d78a31101a960997a4acd41ffd9b9300627fe2b"
+  integrity sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==
   dependencies:
     envinfo "^7.7.3"
 
-"@webpack-cli/serve@^1.4.0":
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.4.0.tgz#f84fd07bcacefe56ce762925798871092f0f228e"
-  integrity sha512-xgT/HqJ+uLWGX+Mzufusl3cgjAcnqYYskaB7o0vRcwOEfuu6hMzSILQpnIzFMGsTaeaX4Nnekl+6fadLbl1/Vg==
+"@webpack-cli/serve@^1.5.1":
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.1.tgz#b5fde2f0f79c1e120307c415a4c1d5eb15a6f278"
+  integrity sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw==
 
 "@xtuc/ieee754@^1.2.0":
   version "1.2.0"
@@ -1703,10 +1715,10 @@ anymatch@~3.1.1:
     normalize-path "^3.0.0"
     picomatch "^2.0.4"
 
-apexcharts@3.26.3:
-  version "3.26.3"
-  resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.26.3.tgz#9cf25eb4dd9daedf94f566e5513fcea08de46e2b"
-  integrity sha512-zbP7RBBV2CGffoVMIuTCUG64YbEUzV8IIT7iNVLMtY/OAVXTjPksDxSqKIniTvgJoscKe6sx4P56qDpBSU19VA==
+apexcharts@3.27.1:
+  version "3.27.1"
+  resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.27.1.tgz#b0e6dd3b3ace028f29b32fcd88e19a2420a18089"
+  integrity sha512-2pfw3pxeWhI0ap5lfxyfGNGoGScfEwfc8XnTpbnzgRdr1AOH5JJN9hh3MvfwrC9TQQfJYC2TZc8P/q9qXUj1bQ==
   dependencies:
     svg.draggable.js "^2.2.2"
     svg.easing.js "^2.0.0"
@@ -1967,10 +1979,10 @@ autwh@0.1.0:
   dependencies:
     oauth "0.9.15"
 
-aws-sdk@2.918.0:
-  version "2.918.0"
-  resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.918.0.tgz#e4323de000262beb762e9c139f89e07282462f17"
-  integrity sha512-ZjWanOA1Zo664EyWLCnbUlkwCjoRPmSIMx529W4gk1418qo3oCEcvUy1HeibGGIClYnZZ7J4FMQvVDm2+JtHLQ==
+aws-sdk@2.923.0:
+  version "2.923.0"
+  resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.923.0.tgz#97a95686e9dba10f628092bfd90f84397c8ad55f"
+  integrity sha512-93YK9Mx32qvH5eLrDRVkvwpEc7GJ6mces1qQugmNZCuQT68baILyDs0IMRtHS6NYxxiM6XNRFc7ubgMlnafYjg==
   dependencies:
     buffer "4.9.2"
     events "1.1.1"
@@ -2307,10 +2319,10 @@ builtin-modules@^1.1.1:
   resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
   integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
 
-bull@3.22.6:
-  version "3.22.6"
-  resolved "https://registry.yarnpkg.com/bull/-/bull-3.22.6.tgz#039b5a59689b0b236ca85c9397e76db481cc9b3c"
-  integrity sha512-M7jYiohDP6qhtm+3D+6xDt52u1vdJyqk4EdeZBc39pKJpqLgCtUFuHrTPycvd6TLCqtcW/3kA2Gx70zmKUmWYg==
+bull@3.22.7:
+  version "3.22.7"
+  resolved "https://registry.yarnpkg.com/bull/-/bull-3.22.7.tgz#be17398edad4e17e54db9b9c7388d92381f6ea1d"
+  integrity sha512-hrpfs1InzliuevKUOxAfGVctViic8uKP5zOkFAeNI4yVhlR5Ai3pSXFBiC78p2dl/t2AlC504pOqYJw3W9eSSA==
   dependencies:
     cron-parser "^2.13.0"
     debuglog "^1.0.0"
@@ -3143,10 +3155,10 @@ core-js-compat@^3.9.1:
     browserslist "^4.16.3"
     semver "7.0.0"
 
-core-js@3.13.1:
-  version "3.13.1"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.13.1.tgz#30303fabd53638892062d8b4e802cac7599e9fb7"
-  integrity sha512-JqveUc4igkqwStL2RTRn/EPFGBOfEZHxJl/8ej1mXJR75V3go2mFF4bmUYkEIT1rveHKnkUlcJX/c+f1TyIovQ==
+core-js@3.14.0:
+  version "3.14.0"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.14.0.tgz#62322b98c71cc2018b027971a69419e2425c2a6c"
+  integrity sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA==
 
 core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0:
   version "1.0.2"
@@ -4147,13 +4159,13 @@ eslint-visitor-keys@^2.0.0:
   resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
   integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
 
-eslint@7.27.0:
-  version "7.27.0"
-  resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.27.0.tgz#665a1506d8f95655c9274d84bd78f7166b07e9c7"
-  integrity sha512-JZuR6La2ZF0UD384lcbnd0Cgg6QJjiCwhMD6eU4h/VGPcVGwawNNzKU41tgokGXnfjOOyI6QIffthhJTPzzuRA==
+eslint@7.28.0:
+  version "7.28.0"
+  resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.28.0.tgz#435aa17a0b82c13bb2be9d51408b617e49c1e820"
+  integrity sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==
   dependencies:
     "@babel/code-frame" "7.12.11"
-    "@eslint/eslintrc" "^0.4.1"
+    "@eslint/eslintrc" "^0.4.2"
     ajv "^6.10.0"
     chalk "^4.0.0"
     cross-spawn "^7.0.2"
@@ -4170,7 +4182,7 @@ eslint@7.27.0:
     fast-deep-equal "^3.1.3"
     file-entry-cache "^6.0.1"
     functional-red-black-tree "^1.0.1"
-    glob-parent "^5.0.0"
+    glob-parent "^5.1.2"
     globals "^13.6.0"
     ignore "^4.0.6"
     import-fresh "^3.0.0"
@@ -4809,13 +4821,20 @@ glob-parent@^3.1.0:
     is-glob "^3.1.0"
     path-dirname "^1.0.0"
 
-glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0:
+glob-parent@^5.1.0, glob-parent@~5.1.0:
   version "5.1.1"
   resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
   integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==
   dependencies:
     is-glob "^4.0.1"
 
+glob-parent@^5.1.2:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+  dependencies:
+    is-glob "^4.0.1"
+
 glob-stream@^6.1.0:
   version "6.1.0"
   resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4"
@@ -4898,13 +4917,6 @@ globals@^11.1.0:
   resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
   integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
 
-globals@^12.1.0:
-  version "12.4.0"
-  resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8"
-  integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==
-  dependencies:
-    type-fest "^0.8.1"
-
 globals@^13.6.0:
   version "13.7.0"
   resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795"
@@ -4912,19 +4924,14 @@ globals@^13.6.0:
   dependencies:
     type-fest "^0.20.2"
 
-globby@^11.0.1:
-  version "11.0.1"
-  resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357"
-  integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==
+globals@^13.9.0:
+  version "13.9.0"
+  resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb"
+  integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==
   dependencies:
-    array-union "^2.1.0"
-    dir-glob "^3.0.1"
-    fast-glob "^3.1.1"
-    ignore "^5.1.4"
-    merge2 "^1.3.0"
-    slash "^3.0.0"
+    type-fest "^0.20.2"
 
-globby@^11.0.2:
+globby@^11.0.2, globby@^11.0.3:
   version "11.0.3"
   resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb"
   integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==
@@ -6909,12 +6916,12 @@ methods@^1.1.2:
   resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
   integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
 
-mfm-js@0.16.4:
-  version "0.16.4"
-  resolved "https://registry.yarnpkg.com/mfm-js/-/mfm-js-0.16.4.tgz#fde427db3e62b157b3ca807785d502cebe54ebd0"
-  integrity sha512-j//3P9PZltQdzoH7+PDwNC8GoK+qIUuRMAl0nO1pXtvHzwC/9yGWVUJpCXGAiI4KPZBMoK5ZV1LA53tjlbyNnA==
+mfm-js@0.18.0:
+  version "0.18.0"
+  resolved "https://registry.yarnpkg.com/mfm-js/-/mfm-js-0.18.0.tgz#4d17181603fac03470aa3092f6d4744b3459a5f2"
+  integrity sha512-AxoUKs/EH059hx2P0OvYkzVLV9BGyX5AsIjPJhw/VXazlt1RM8uKKxWUpbwB9ZoS2p/Z3b2kV5N/NlNW2RzF0A==
   dependencies:
-    twemoji-parser "13.0.x"
+    twemoji-parser "13.1.x"
 
 micromatch@^3.0.4, micromatch@^3.1.4:
   version "3.1.10"
@@ -7058,10 +7065,10 @@ minizlib@^2.0.0, minizlib@^2.1.1:
     minipass "^3.0.0"
     yallist "^4.0.0"
 
-misskey-js@0.0.2:
-  version "0.0.2"
-  resolved "https://registry.yarnpkg.com/misskey-js/-/misskey-js-0.0.2.tgz#233d62e5a326a00dd72f36d63436e6584c8076f2"
-  integrity sha512-gsq3E9lUepNapK4i/3mmqjobQV6gYlgO1O1rQt401ot3LCYlcaLhlUrwBOFtI+ALMGKgwRgkLlDQhcWgAfHHuQ==
+misskey-js@0.0.4:
+  version "0.0.4"
+  resolved "https://registry.yarnpkg.com/misskey-js/-/misskey-js-0.0.4.tgz#eb312eed2e013e97ed0fcd6f6e40ea8dcc86b7b4"
+  integrity sha512-h8SgbaFhP6gX02hMvMPcJbeBIAbp+Vqj1W496zjF6Vu/mj05ga7swnthz87qo53zBuWw5dvJaDutHv46tN6hew==
   dependencies:
     "@vue/reactivity" "^3.0.11"
     autobind-decorator "^2.4.0"
@@ -8725,10 +8732,10 @@ prismjs@1.23.0:
   optionalDependencies:
     clipboard "^2.0.0"
 
-probe-image-size@7.1.1:
-  version "7.1.1"
-  resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.1.1.tgz#ea3dc7acd69fb041212de12bb390be58c1025917"
-  integrity sha512-lvpHKqtino5SSrFEKxFncco8raLywljcLbjcE35VIRl5O+u1qLXenNaEfnopYdJgN4PPvvBxdr8b7sEUTvfY/w==
+probe-image-size@7.2.1:
+  version "7.2.1"
+  resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.2.1.tgz#df0c924e67e247bc94f8fcb0fad7f0081061fc44"
+  integrity sha512-d+6L3NvQBCNt4peRDoEfA7r9bPm6/qy18FnLKwg4NWBC5JrJm0pMLRg1kF4XNsPe1bUdt3WIMonPJzQWN2HXjQ==
   dependencies:
     lodash.merge "^4.6.2"
     needle "^2.5.2"
@@ -9573,18 +9580,18 @@ safe-regex@^1.1.0:
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
-sass-loader@11.1.1:
-  version "11.1.1"
-  resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-11.1.1.tgz#0db441bbbe197b2af96125bebb7f4be6476b13a7"
-  integrity sha512-fOCp/zLmj1V1WHDZbUbPgrZhA7HKXHEqkslzB+05U5K9SbSbcmH91C7QLW31AsXikxUMaxXRhhcqWZAxUMLDyA==
+sass-loader@12.0.0:
+  version "12.0.0"
+  resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.0.0.tgz#ba91df5725cb9676c8e0937002a647ab011eb94a"
+  integrity sha512-LJQMyDdNdhcvoO2gJFw7KpTaioVFDeRJOuatRDUNgCIqyu4s4kgDsNofdGzAZB1zFOgo/p3fy+aR/uGXamcJBg==
   dependencies:
     klona "^2.0.4"
     neo-async "^2.6.2"
 
-sass@1.34.0:
-  version "1.34.0"
-  resolved "https://registry.yarnpkg.com/sass/-/sass-1.34.0.tgz#e46d5932d8b0ecc4feb846d861f26a578f7f7172"
-  integrity sha512-rHEN0BscqjUYuomUEaqq3BMgsXqQfkcMVR7UhscsAVub0/spUrZGBMxQXFS2kfiDsPLZw5yuU9iJEFNC2x38Qw==
+sass@1.34.1:
+  version "1.34.1"
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.34.1.tgz#30f45c606c483d47b634f1e7371e13ff773c96ef"
+  integrity sha512-scLA7EIZM+MmYlej6sdVr0HRbZX5caX5ofDT9asWnUJj21oqgsC+1LuNfm0eg+vM0fCTZHhwImTiCU0sx9h9CQ==
   dependencies:
     chokidar ">=3.0.0 <4.0.0"
 
@@ -10776,10 +10783,10 @@ tree-kill@^1.2.2:
   resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
   integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
 
-ts-loader@9.2.2:
-  version "9.2.2"
-  resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.2.tgz#416333900621c82d5eb1b1f6dea4114111f096bf"
-  integrity sha512-hNIhGTQHtNKjOzR2ZtQ2OSVbXPykOae+zostf1IlHCf61Mt41GMJurKNqrYUbzHgpmj6UWRu8eBfb7q0XliV0g==
+ts-loader@9.2.3:
+  version "9.2.3"
+  resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.3.tgz#dc3b6362a4d4382493cd4f138d345f419656de68"
+  integrity sha512-sEyWiU3JMHBL55CIeC4iqJQadI0U70A5af0kvgbNLHVNz2ACztQg0j/9x10bjjIht8WfFYLKfn4L6tkZ+pu+8Q==
   dependencies:
     chalk "^4.1.0"
     enhanced-resolve "^5.0.0"
@@ -10802,10 +10809,10 @@ ts-node@10.0.0:
     source-map-support "^0.5.17"
     yn "3.1.1"
 
-tsc-alias@1.2.11:
-  version "1.2.11"
-  resolved "https://registry.yarnpkg.com/tsc-alias/-/tsc-alias-1.2.11.tgz#661d5b596acffd5f3cf21874f966ef19689e2b7c"
-  integrity sha512-cHYhOG/kolBq7ZrNLj355FYOlXYhfv0poOO3Fm9j9igcZeNGqnwOsouE3ltcymODjjU7XD/7KdWnZWanaXDJiw==
+tsc-alias@1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/tsc-alias/-/tsc-alias-1.3.2.tgz#a0d9f5cadf5bef8afebbb24be5b49b9868d7ffa8"
+  integrity sha512-D6p3EQDWf00ZQ9zuzcwDVNYTSRSz8YXI47xPU0QAtCGv4qPwOz9hKEXH13kQl+TLfeb7r5QiVHIhBzyeDOjtRQ==
   dependencies:
     "@jfonx/console-utils" "^1.0.3"
     "@jfonx/file-utils" "^3.0.1"
@@ -10883,10 +10890,10 @@ tsutils@^2.29.0:
   dependencies:
     tslib "^1.8.1"
 
-tsutils@^3.17.1:
-  version "3.17.1"
-  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
-  integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
+tsutils@^3.21.0:
+  version "3.21.0"
+  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
+  integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
   dependencies:
     tslib "^1.8.1"
 
@@ -10902,7 +10909,7 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
   integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
 
-twemoji-parser@13.0.x, twemoji-parser@13.1.0, twemoji-parser@13.1.x:
+twemoji-parser@13.1.0, twemoji-parser@13.1.x:
   version "13.1.0"
   resolved "https://registry.yarnpkg.com/twemoji-parser/-/twemoji-parser-13.1.0.tgz#65e7e449c59258791b22ac0b37077349127e3ea4"
   integrity sha512-AQOzLJpYlpWMy8n+0ATyKKZzWlZBJN+G0C+5lhX7Ftc2PeEVdUU/7ns2Pn2vVje26AIZ/OHwFoUbdv6YYD/wGg==
@@ -10936,11 +10943,6 @@ type-fest@^0.6.0:
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
   integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
 
-type-fest@^0.8.1:
-  version "0.8.1"
-  resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
-  integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-
 type-is@^1.6.14, type-is@^1.6.16, type-is@^1.6.4:
   version "1.6.18"
   resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@@ -10976,10 +10978,10 @@ typedarray@^0.0.6:
   resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
   integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
 
-typeorm@0.2.32:
-  version "0.2.32"
-  resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.32.tgz#544dbfdfe0cd0887548d9bcbd28527ea4f4b3c9b"
-  integrity sha512-LOBZKZ9As3f8KRMPCUT2H0JZbZfWfkcUnO3w/1BFAbL/X9+cADTF6bczDGGaKVENJ3P8SaKheKmBgpt5h1x+EQ==
+typeorm@0.2.34:
+  version "0.2.34"
+  resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.34.tgz#637b3cec2de54ee7f423012b813a2022c0aacc8b"
+  integrity sha512-FZAeEGGdSGq7uTH3FWRQq67JjKu0mgANsSZ04j3kvDYNgy9KwBl/6RFgMVgiSgjf7Rqd7NrhC2KxVT7I80qf7w==
   dependencies:
     "@sqltools/formatter" "^1.2.2"
     app-root-path "^3.0.0"
@@ -11378,14 +11380,14 @@ vue-svg-loader@0.17.0-beta.2:
     semver "^7.3.2"
     svgo "^1.3.2"
 
-vue@3.0.11:
-  version "3.0.11"
-  resolved "https://registry.yarnpkg.com/vue/-/vue-3.0.11.tgz#c82f9594cbf4dcc869241d4c8dd3e08d9a8f4b5f"
-  integrity sha512-3/eUi4InQz8MPzruHYSTQPxtM3LdZ1/S/BvaU021zBnZi0laRUyH6pfuE4wtUeLvI8wmUNwj5wrZFvbHUXL9dw==
+vue@3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/vue/-/vue-3.1.1.tgz#9ad655758a0fa6c0dee5b3d2431d3912a9b381aa"
+  integrity sha512-j9fj3PNPMxo2eqOKYjMuss9XBS8ZtmczLY3kPvjcp9d3DbhyNqLYbaMQH18+1pDIzzVvQCQBvIf774LsjjqSKA==
   dependencies:
-    "@vue/compiler-dom" "3.0.11"
-    "@vue/runtime-dom" "3.0.11"
-    "@vue/shared" "3.0.11"
+    "@vue/compiler-dom" "3.1.1"
+    "@vue/runtime-dom" "3.1.1"
+    "@vue/shared" "3.1.1"
 
 vuedraggable@4.0.1:
   version "4.0.1"
@@ -11446,15 +11448,15 @@ webidl-conversions@^6.1.0:
   resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
   integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
 
-webpack-cli@4.7.0:
-  version "4.7.0"
-  resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.0.tgz#3195a777f1f802ecda732f6c95d24c0004bc5a35"
-  integrity sha512-7bKr9182/sGfjFm+xdZSwgQuFjgEcy0iCTIBxRUeteJ2Kr8/Wz0qNJX+jw60LU36jApt4nmMkep6+W5AKhok6g==
+webpack-cli@4.7.2:
+  version "4.7.2"
+  resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.2.tgz#a718db600de6d3906a4357e059ae584a89f4c1a5"
+  integrity sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw==
   dependencies:
     "@discoveryjs/json-ext" "^0.5.0"
-    "@webpack-cli/configtest" "^1.0.3"
-    "@webpack-cli/info" "^1.2.4"
-    "@webpack-cli/serve" "^1.4.0"
+    "@webpack-cli/configtest" "^1.0.4"
+    "@webpack-cli/info" "^1.3.0"
+    "@webpack-cli/serve" "^1.5.1"
     colorette "^1.2.1"
     commander "^7.0.0"
     execa "^5.0.0"