summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--api/assets/openapi.json5966
-rw-r--r--api/assets/responses.json90
-rw-r--r--api/assets/schemas.json1961
-rw-r--r--api/jest/getRouteDescriptions.js (renamed from api/jest/getRouteDescriptions.ts)30
-rw-r--r--api/scripts/generate_body_schema.js (renamed from api/scripts/generate_test_schema.ts)22
-rw-r--r--api/scripts/generate_body_schema.ts60
-rw-r--r--api/scripts/generate_openapi_schema.js127
-rw-r--r--api/scripts/generate_openapi_schema.ts92
-rw-r--r--api/src/routes/auth/login.ts23
-rw-r--r--api/src/routes/auth/register.ts24
-rw-r--r--api/src/routes/channels/#channel_id/recipients.ts5
-rw-r--r--api/src/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts4
-rw-r--r--api/src/routes/sticker-packs/#id/index.ts5
-rw-r--r--api/src/routes/sticker-packs/index.ts5
-rw-r--r--api/src/util/String.ts2
-rw-r--r--api/tests/routes.test.ts4
-rw-r--r--util/src/util/Email.ts20
-rw-r--r--util/src/util/Token.ts (renamed from util/src/util/checkToken.ts)20
-rw-r--r--util/src/util/index.ts3
19 files changed, 7415 insertions, 1048 deletions
diff --git a/api/assets/openapi.json b/api/assets/openapi.json
index fa527911..caf572b9 100644
--- a/api/assets/openapi.json
+++ b/api/assets/openapi.json
@@ -4,7 +4,12 @@
 		{
 			"url": "https://api.fosscord.com/v{version}",
 			"description": "Official fosscord instance",
-			"variables": { "version": { "description": "", "default": "9", "enum": ["8", "9"] } }
+			"variables": {
+				"version": {
+					"default": "9",
+					"enum": ["8", "9"]
+				}
+			}
 		}
 	],
 	"info": {
@@ -12,95 +17,2866 @@
 		"version": "1.0.0",
 		"title": "Fosscord HTTP API Routes",
 		"termsOfService": "",
-		"contact": { "name": "Fosscord" },
-		"license": { "name": "AGPLV3", "url": "https://www.gnu.org/licenses/agpl-3.0.en.html" }
+		"contact": {
+			"name": "Fosscord"
+		},
+		"license": {
+			"name": "AGPLV3",
+			"url": "https://www.gnu.org/licenses/agpl-3.0.en.html"
+		}
 	},
-	"tags": [],
+	"tags": [
+		{
+			"name": "voice"
+		},
+		{
+			"name": "users"
+		},
+		{
+			"name": "store"
+		},
+		{
+			"name": "sticker-packs"
+		},
+		{
+			"name": "science"
+		},
+		{
+			"name": "ping"
+		},
+		{
+			"name": "outbound-promotions"
+		},
+		{
+			"name": "invites"
+		},
+		{
+			"name": "guilds"
+		},
+		{
+			"name": "gateway"
+		},
+		{
+			"name": "experiments"
+		},
+		{
+			"name": "discoverable-guilds"
+		},
+		{
+			"name": "channels"
+		},
+		{
+			"name": "auth"
+		},
+		{
+			"name": "applications"
+		}
+	],
 	"paths": {
 		"/users/{id}": {
 			"get": {
 				"summary": "",
-				"description": "",
-				"parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "user id" }],
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user id"
+					}
+				],
 				"operationId": "",
 				"responses": {
 					"200": {
 						"description": "User found",
-						"content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPublic" } } }
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/UserPublic"
+								}
+							}
+						}
 					},
 					"404": {
 						"description": "User not found",
-						"content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } }
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/Error"
+								}
+							}
+						}
 					}
 				},
-				"security": [{ "Token": [] }]
+				"security": [
+					{
+						"Token": []
+					}
+				]
 			}
 		},
 		"/users/@me": {
 			"get": {
 				"summary": "",
-				"description": "",
 				"parameters": [],
 				"operationId": "",
 				"responses": {
 					"200": {
 						"description": "Authenticated user",
-						"content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPublic" } } }
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/UserPublic"
+								}
+							}
+						}
+					}
+				},
+				"security": [
+					{
+						"Token": []
+					}
+				]
+			}
+		},
+		"/voice/regions/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["voice"]
+			}
+		},
+		"/users/@me/settings/": {
+			"patch": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/UserSettingsSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/relationships/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users", "relationships"]
+			},
+			"post": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/RelationshipPostSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/relationships/{id}": {
+			"put": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/RelationshipPutSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "id"
+					}
+				],
+				"tags": ["users"]
+			},
+			"delete": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "id"
+					}
+				],
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/library/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			},
+			"patch": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/UserModifySchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/guilds/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/guilds/{id}": {
+			"delete": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "id"
+					}
+				],
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/disable/": {
+			"post": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/devices/": {
+			"post": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/delete/": {
+			"post": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/connections/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/channels/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			},
+			"post": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/DmChannelCreateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/billing/subscriptions/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/billing/country-code/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/applications/{app_id}/entitlements/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "app_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "app_id"
+					}
+				],
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/affinities/users/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/@me/affinities/guilds/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["users"]
+			}
+		},
+		"/users/{id}/profile/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"200": {
+						"content": {
+							"application/json": {
+								"schema": {
+									"$ref": "#/components/schemas/UserProfileResponse"
+								}
+							}
+						},
+						"description": ""
+					}
+				},
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "id"
+					}
+				],
+				"tags": ["users"]
+			}
+		},
+		"/users/{id}/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "id"
+					}
+				],
+				"tags": ["users"]
+			}
+		},
+		"/store/skus/skus/{id}": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "id"
+					}
+				],
+				"tags": ["store"]
+			}
+		},
+		"/store/applications/applications/{id}": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "id"
+					}
+				],
+				"tags": ["store"]
+			}
+		},
+		"/sticker-packs/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["sticker", "sticker-packs"]
+			}
+		},
+		"/sticker-packs/{id}/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "id"
+					}
+				],
+				"tags": ["sticker", "sticker-packs"]
+			}
+		},
+		"/science/": {
+			"post": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["science"]
+			}
+		},
+		"/ping/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["ping"]
+			}
+		},
+		"/outbound-promotions/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["outbound", "outbound-promotions"]
+			}
+		},
+		"/invites/{code}": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "code",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "code"
+					}
+				],
+				"tags": ["invites"]
+			},
+			"post": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "code",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "code"
+					}
+				],
+				"tags": ["invites"]
+			},
+			"delete": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "code",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "code"
+					}
+				],
+				"tags": ["invites"]
+			}
+		},
+		"/guilds/templates/{code}": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "code",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "code"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"post": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/GuildTemplateCreateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "code",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "code"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/": {
+			"post": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/GuildCreateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/widget.png/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/widget.json/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/widget/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/WidgetModifySchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/welcome_screen/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/GuildUpdateWelcomeScreenSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/voice-states/{user_id}/": {
+			"patch": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/VoiceStateUpdateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "user_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/vanity-url/": {
+			"get": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/VanityUrlSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/templates/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"post": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/TemplateCreateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/templates/{code}": {
+			"delete": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "code",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "code"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"put": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "code",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "code"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/TemplateModifySchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "code",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "code"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/roles/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"post": {
+				"description": "##### Requires the ``MANAGE_ROLES`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/RoleModifySchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/RolePositionUpdateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/roles/{role_id}": {
+			"delete": {
+				"description": "##### Requires the ``MANAGE_ROLES`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "role_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "role_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "##### Requires the ``MANAGE_ROLES`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/RoleModifySchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "role_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "role_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/regions/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/members/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/members/{member_id}/nick/": {
+			"patch": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/MemberNickChangeSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "member_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "member_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/members/{member_id}/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "member_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "member_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/MemberChangeSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "member_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "member_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"put": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "member_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "member_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"delete": {
+				"description": "##### Requires the ``KICK_MEMBERS`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "member_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "member_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/invites/": {
+			"get": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "##### Requires the ``MANAGE_GUILD`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/GuildUpdateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/delete/": {
+			"post": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/channels/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"post": {
+				"description": "##### Requires the ``MANAGE_CHANNELS`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/ChannelModifySchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"patch": {
+				"description": "##### Requires the ``MANAGE_CHANNELS`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/ChannelReorderSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/bans/": {
+			"get": {
+				"description": "##### Requires the ``BAN_MEMBERS`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/bans/{user}": {
+			"get": {
+				"description": "##### Requires the ``BAN_MEMBERS`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "user",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/guilds/{guild_id}/bans/{user_id}": {
+			"put": {
+				"description": "##### Requires the ``BAN_MEMBERS`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/BanCreateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "user_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"delete": {
+				"description": "##### Requires the ``BAN_MEMBERS`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "user_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/gateway/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["gateway"]
+			}
+		},
+		"/gateway/bot": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["gateway"]
+			}
+		},
+		"/experiments/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["experiments"]
+			}
+		},
+		"/discoverable-guilds/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["discoverable", "discoverable-guilds"]
+			}
+		},
+		"/channels/{channel_id}/webhooks/": {
+			"post": {
+				"description": "##### Requires the ``MANAGE_WEBHOOKS`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/WebhookCreateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/typing/": {
+			"post": {
+				"description": "##### Requires the ``SEND_MESSAGES`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/recipients/{user_id}": {
+			"put": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "user_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user_id"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"delete": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "user_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/pins/{message_id}": {
+			"put": {
+				"description": "##### Requires the ``VIEW_CHANNEL`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"delete": {
+				"description": "##### Requires the ``VIEW_CHANNEL`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/pins/": {
+			"get": {
+				"description": "##### Requires the ``READ_MESSAGE_HISTORY`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/permissions/{overwrite_id}": {
+			"put": {
+				"description": "##### Requires the ``MANAGE_ROLES`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/ChannelPermissionOverwriteSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "overwrite_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "overwrite_id"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"delete": {
+				"description": "##### Requires the ``MANAGE_ROLES`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "overwrite_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "overwrite_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/messages/bulk-delete/": {
+			"post": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/BulkDeleteSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/messages/{message_id}/reactions/": {
+			"delete": {
+				"description": "##### Requires the ``MANAGE_MESSAGES`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/messages/{message_id}/reactions/{emoji}": {
+			"delete": {
+				"description": "##### Requires the ``MANAGE_MESSAGES`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					},
+					{
+						"name": "emoji",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "emoji"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"get": {
+				"description": "##### Requires the ``VIEW_CHANNEL`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					},
+					{
+						"name": "emoji",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "emoji"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/messages/{message_id}/reactions/{emoji}/{user_id}": {
+			"put": {
+				"description": "##### Requires the ``READ_MESSAGE_HISTORY`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					},
+					{
+						"name": "emoji",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "emoji"
+					},
+					{
+						"name": "user_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user_id"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"delete": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					},
+					{
+						"name": "emoji",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "emoji"
+					},
+					{
+						"name": "user_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "user_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/messages/{message_id}/": {
+			"patch": {
+				"description": "##### Requires the ``SEND_MESSAGES`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/MessageCreateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"delete": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/messages/{message_id}/ack/": {
+			"post": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/MessageAcknowledgeSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					},
+					{
+						"name": "message_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "message_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/invites/": {
+			"post": {
+				"description": "##### Requires the ``CREATE_INSTANT_INVITE`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/InviteCreateSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"get": {
+				"description": "##### Requires the ``MANAGE_CHANNELS`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/channels/{channel_id}/": {
+			"get": {
+				"description": "##### Requires the ``VIEW_CHANNEL`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"delete": {
+				"description": "##### Requires the ``MANAGE_CHANNELS`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			},
+			"patch": {
+				"description": "##### Requires the ``MANAGE_CHANNELS`` permission\n",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/ChannelModifySchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "channel_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "channel_id"
+					}
+				],
+				"tags": ["channels"]
+			}
+		},
+		"/auth/register/": {
+			"post": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/RegisterSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["auth"]
+			}
+		},
+		"/applications/detectable/": {
+			"get": {
+				"description": "",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"tags": ["applications"]
+			}
+		},
+		"/guilds/{guild_id}/members/{member_id}/roles/{role_id}/": {
+			"delete": {
+				"description": "##### Requires the ``MANAGE_ROLES`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "member_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "member_id"
+					},
+					{
+						"name": "role_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "role_id"
+					}
+				],
+				"tags": ["guilds"]
+			},
+			"put": {
+				"description": "##### Requires the ``MANAGE_ROLES`` permission\n",
+				"responses": {
+					"default": {
+						"description": "not documented"
+					}
+				},
+				"parameters": [
+					{
+						"name": "guild_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "guild_id"
+					},
+					{
+						"name": "member_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "member_id"
+					},
+					{
+						"name": "role_id",
+						"in": "path",
+						"required": true,
+						"schema": {
+							"type": "string"
+						},
+						"description": "role_id"
+					}
+				],
+				"tags": ["guilds"]
+			}
+		},
+		"/auth/login/": {
+			"post": {
+				"description": "",
+				"requestBody": {
+					"required": true,
+					"content": {
+						"application/json": {
+							"schema": {
+								"$ref": "#/components/schemas/LoginSchema"
+							}
+						}
+					}
+				},
+				"responses": {
+					"default": {
+						"description": "not documented"
 					}
 				},
-				"security": [{ "Token": [] }]
+				"tags": ["auth"]
 			}
 		}
 	},
-	"externalDocs": { "description": "", "url": "http://docs.fosscord.com/" },
+	"externalDocs": {
+		"url": "http://docs.fosscord.com/"
+	},
 	"components": {
 		"schemas": {
 			"Error": {
 				"type": "object",
-				"properties": { "code": { "type": "integer" }, "message": { "type": "string" } },
+				"properties": {
+					"code": {
+						"type": "integer"
+					},
+					"message": {
+						"type": "string"
+					}
+				},
 				"required": ["code", "message"]
 			},
 			"RateLimit": {
 				"type": "object",
-				"properties": { "retry_after": { "type": "integer" }, "message": { "type": "string" }, "global": { "type": "boolean" } },
+				"properties": {
+					"retry_after": {
+						"type": "integer"
+					},
+					"message": {
+						"type": "string"
+					},
+					"global": {
+						"type": "boolean"
+					}
+				},
 				"required": ["code", "message", "globa"]
 			},
 			"User": {
 				"type": "object",
 				"properties": {
-					"username": { "type": "string" },
-					"discriminator": { "type": "string" },
-					"avatar": { "type": "string" },
-					"accent_color": { "type": "integer" },
-					"banner": { "type": "string" },
-					"phone": { "type": "string" },
-					"desktop": { "type": "boolean" },
-					"mobile": { "type": "boolean" },
-					"premium": { "type": "boolean" },
-					"premium_type": { "type": "integer" },
-					"bot": { "type": "boolean" },
-					"bio": { "type": "string" },
-					"system": { "type": "boolean" },
-					"nsfw_allowed": { "type": "boolean" },
-					"mfa_enabled": { "type": "boolean" },
-					"created_at": { "type": "string", "format": "date-time" },
-					"verified": { "type": "boolean" },
-					"disabled": { "type": "boolean" },
-					"deleted": { "type": "boolean" },
-					"email": { "type": "string" },
-					"flags": { "type": "string" },
-					"public_flags": { "type": "string" },
-					"relationships": { "type": "array", "items": { "$ref": "#/components/schemas/Relationship" } },
-					"connected_accounts": { "type": "array", "items": { "$ref": "#/components/schemas/ConnectedAccount" } },
+					"username": {
+						"type": "string"
+					},
+					"discriminator": {
+						"type": "string"
+					},
+					"avatar": {
+						"type": "string"
+					},
+					"accent_color": {
+						"type": "integer"
+					},
+					"banner": {
+						"type": "string"
+					},
+					"phone": {
+						"type": "string"
+					},
+					"desktop": {
+						"type": "boolean"
+					},
+					"mobile": {
+						"type": "boolean"
+					},
+					"premium": {
+						"type": "boolean"
+					},
+					"premium_type": {
+						"type": "integer"
+					},
+					"bot": {
+						"type": "boolean"
+					},
+					"bio": {
+						"type": "string"
+					},
+					"system": {
+						"type": "boolean"
+					},
+					"nsfw_allowed": {
+						"type": "boolean"
+					},
+					"mfa_enabled": {
+						"type": "boolean"
+					},
+					"created_at": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"verified": {
+						"type": "boolean"
+					},
+					"disabled": {
+						"type": "boolean"
+					},
+					"deleted": {
+						"type": "boolean"
+					},
+					"email": {
+						"type": "string"
+					},
+					"flags": {
+						"type": "string"
+					},
+					"public_flags": {
+						"type": "string"
+					},
+					"relationships": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Relationship"
+						}
+					},
+					"connected_accounts": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/ConnectedAccount"
+						}
+					},
 					"data": {
 						"type": "object",
-						"properties": { "valid_tokens_since": { "type": "string", "format": "date-time" }, "hash": { "type": "string" } },
+						"properties": {
+							"valid_tokens_since": {
+								"type": "string",
+								"format": "date-time"
+							},
+							"hash": {
+								"type": "string"
+							}
+						},
 						"additionalProperties": false,
 						"required": ["valid_tokens_since"]
 					},
-					"fingerprints": { "type": "array", "items": { "type": "string" } },
-					"settings": { "$ref": "#/components/schemas/UserSettings" },
-					"id": { "type": "string" }
+					"fingerprints": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"settings": {
+						"$ref": "#/components/schemas/UserSettings"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": [
 					"bio",
@@ -131,29 +2907,64 @@
 			"Relationship": {
 				"type": "object",
 				"properties": {
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"nickname": { "type": "string" },
-					"type": { "$ref": "#/components/schemas/RelationshipType" },
-					"id": { "type": "string" }
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"nickname": {
+						"type": "string"
+					},
+					"type": {
+						"$ref": "#/components/schemas/RelationshipType"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["id", "type", "user", "user_id"]
 			},
-			"RelationshipType": { "enum": [1, 2, 3, 4], "type": "number" },
+			"RelationshipType": {
+				"enum": [1, 2, 3, 4],
+				"type": "number"
+			},
 			"ConnectedAccount": {
 				"type": "object",
 				"properties": {
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"access_token": { "type": "string" },
-					"friend_sync": { "type": "boolean" },
-					"name": { "type": "string" },
-					"revoked": { "type": "boolean" },
-					"show_activity": { "type": "boolean" },
-					"type": { "type": "string" },
-					"verifie": { "type": "boolean" },
-					"visibility": { "type": "integer" },
-					"id": { "type": "string" }
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"access_token": {
+						"type": "string"
+					},
+					"friend_sync": {
+						"type": "boolean"
+					},
+					"name": {
+						"type": "string"
+					},
+					"revoked": {
+						"type": "boolean"
+					},
+					"show_activity": {
+						"type": "boolean"
+					},
+					"type": {
+						"type": "string"
+					},
+					"verifie": {
+						"type": "boolean"
+					},
+					"visibility": {
+						"type": "integer"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": [
 					"access_token",
@@ -172,64 +2983,151 @@
 			"UserSettings": {
 				"type": "object",
 				"properties": {
-					"afk_timeout": { "type": "integer" },
-					"allow_accessibility_detection": { "type": "boolean" },
-					"animate_emoji": { "type": "boolean" },
-					"animate_stickers": { "type": "integer" },
-					"contact_sync_enabled": { "type": "boolean" },
-					"convert_emoticons": { "type": "boolean" },
+					"afk_timeout": {
+						"type": "integer"
+					},
+					"allow_accessibility_detection": {
+						"type": "boolean"
+					},
+					"animate_emoji": {
+						"type": "boolean"
+					},
+					"animate_stickers": {
+						"type": "integer"
+					},
+					"contact_sync_enabled": {
+						"type": "boolean"
+					},
+					"convert_emoticons": {
+						"type": "boolean"
+					},
 					"custom_status": {
 						"type": "object",
 						"properties": {
-							"emoji_id": { "type": "string" },
-							"emoji_name": { "type": "string" },
-							"expires_at": { "type": "integer" },
-							"text": { "type": "string" }
+							"emoji_id": {
+								"type": "string"
+							},
+							"emoji_name": {
+								"type": "string"
+							},
+							"expires_at": {
+								"type": "integer"
+							},
+							"text": {
+								"type": "string"
+							}
 						},
 						"additionalProperties": false
 					},
-					"default_guilds_restricted": { "type": "boolean" },
-					"detect_platform_accounts": { "type": "boolean" },
-					"developer_mode": { "type": "boolean" },
-					"disable_games_tab": { "type": "boolean" },
-					"enable_tts_command": { "type": "boolean" },
-					"explicit_content_filter": { "type": "integer" },
+					"default_guilds_restricted": {
+						"type": "boolean"
+					},
+					"detect_platform_accounts": {
+						"type": "boolean"
+					},
+					"developer_mode": {
+						"type": "boolean"
+					},
+					"disable_games_tab": {
+						"type": "boolean"
+					},
+					"enable_tts_command": {
+						"type": "boolean"
+					},
+					"explicit_content_filter": {
+						"type": "integer"
+					},
 					"friend_source_flags": {
 						"type": "object",
-						"properties": { "all": { "type": "boolean" } },
+						"properties": {
+							"all": {
+								"type": "boolean"
+							}
+						},
 						"additionalProperties": false,
 						"required": ["all"]
 					},
-					"gateway_connected": { "type": "boolean" },
-					"gif_auto_play": { "type": "boolean" },
+					"gateway_connected": {
+						"type": "boolean"
+					},
+					"gif_auto_play": {
+						"type": "boolean"
+					},
 					"guild_folders": {
 						"type": "array",
 						"items": {
 							"type": "object",
 							"properties": {
-								"color": { "type": "integer" },
-								"guild_ids": { "type": "array", "items": { "type": "string" } },
-								"id": { "type": "integer" },
-								"name": { "type": "string" }
+								"color": {
+									"type": "integer"
+								},
+								"guild_ids": {
+									"type": "array",
+									"items": {
+										"type": "string"
+									}
+								},
+								"id": {
+									"type": "integer"
+								},
+								"name": {
+									"type": "string"
+								}
 							},
 							"additionalProperties": false,
 							"required": ["color", "guild_ids", "id", "name"]
 						}
 					},
-					"guild_positions": { "type": "array", "items": { "type": "string" } },
-					"inline_attachment_media": { "type": "boolean" },
-					"inline_embed_media": { "type": "boolean" },
-					"locale": { "type": "string" },
-					"message_display_compact": { "type": "boolean" },
-					"native_phone_integration_enabled": { "type": "boolean" },
-					"render_embeds": { "type": "boolean" },
-					"render_reactions": { "type": "boolean" },
-					"restricted_guilds": { "type": "array", "items": { "type": "string" } },
-					"show_current_game": { "type": "boolean" },
-					"status": { "enum": ["dnd", "idle", "offline", "online"], "type": "string" },
-					"stream_notifications_enabled": { "type": "boolean" },
-					"theme": { "enum": ["dark", "white"], "type": "string" },
-					"timezone_offset": { "type": "integer" }
+					"guild_positions": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"inline_attachment_media": {
+						"type": "boolean"
+					},
+					"inline_embed_media": {
+						"type": "boolean"
+					},
+					"locale": {
+						"type": "string"
+					},
+					"message_display_compact": {
+						"type": "boolean"
+					},
+					"native_phone_integration_enabled": {
+						"type": "boolean"
+					},
+					"render_embeds": {
+						"type": "boolean"
+					},
+					"render_reactions": {
+						"type": "boolean"
+					},
+					"restricted_guilds": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"show_current_game": {
+						"type": "boolean"
+					},
+					"status": {
+						"enum": ["dnd", "idle", "offline", "online"],
+						"type": "string"
+					},
+					"stream_notifications_enabled": {
+						"type": "boolean"
+					},
+					"theme": {
+						"enum": ["dark", "white"],
+						"type": "string"
+					},
+					"timezone_offset": {
+						"type": "integer"
+					}
 				},
 				"required": [
 					"afk_timeout",
@@ -268,93 +3166,264 @@
 			"Team": {
 				"type": "object",
 				"properties": {
-					"icon": { "type": "string" },
-					"members": { "type": "array", "items": { "$ref": "#/components/schemas/TeamMember" } },
-					"name": { "type": "string" },
-					"owner_user_id": { "type": "string" },
-					"owner_user": { "$ref": "#/components/schemas/User" },
-					"id": { "type": "string" }
+					"icon": {
+						"type": "string"
+					},
+					"members": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/TeamMember"
+						}
+					},
+					"name": {
+						"type": "string"
+					},
+					"owner_user_id": {
+						"type": "string"
+					},
+					"owner_user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["id", "members", "name", "owner_user", "owner_user_id"]
 			},
 			"TeamMember": {
 				"type": "object",
 				"properties": {
-					"membership_state": { "$ref": "#/components/schemas/TeamMemberState" },
-					"permissions": { "type": "array", "items": { "type": "string" } },
-					"team_id": { "type": "string" },
-					"team": { "$ref": "#/components/schemas/Team" },
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"id": { "type": "string" }
+					"membership_state": {
+						"$ref": "#/components/schemas/TeamMemberState"
+					},
+					"permissions": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"team_id": {
+						"type": "string"
+					},
+					"team": {
+						"$ref": "#/components/schemas/Team"
+					},
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["id", "membership_state", "permissions", "team", "team_id", "user", "user_id"]
 			},
-			"TeamMemberState": { "enum": [1, 2], "type": "number" },
+			"TeamMemberState": {
+				"enum": [1, 2],
+				"type": "number"
+			},
 			"Guild": {
 				"type": "object",
 				"properties": {
-					"afk_channel_id": { "type": "string" },
-					"afk_channel": { "$ref": "#/components/schemas/Channel" },
-					"afk_timeout": { "type": "integer" },
-					"bans": { "type": "array", "items": { "$ref": "#/components/schemas/Ban" } },
-					"banner": { "type": "string" },
-					"default_message_notifications": { "type": "integer" },
-					"description": { "type": "string" },
-					"discovery_splash": { "type": "string" },
-					"explicit_content_filter": { "type": "integer" },
-					"features": { "type": "array", "items": { "type": "string" } },
-					"icon": { "type": "string" },
-					"large": { "type": "boolean" },
-					"max_members": { "type": "integer" },
-					"max_presences": { "type": "integer" },
-					"max_video_channel_users": { "type": "integer" },
-					"member_count": { "type": "integer" },
-					"presence_count": { "type": "integer" },
-					"members": { "type": "array", "items": { "$ref": "#/components/schemas/Member" } },
-					"roles": { "type": "array", "items": { "$ref": "#/components/schemas/Role" } },
-					"channels": { "type": "array", "items": { "$ref": "#/components/schemas/Channel" } },
-					"template_id": { "type": "string" },
-					"template": { "$ref": "#/components/schemas/Template" },
-					"emojis": { "type": "array", "items": { "$ref": "#/components/schemas/Emoji" } },
-					"stickers": { "type": "array", "items": { "$ref": "#/components/schemas/Sticker" } },
-					"invites": { "type": "array", "items": { "$ref": "#/components/schemas/Invite" } },
-					"voice_states": { "type": "array", "items": { "$ref": "#/components/schemas/VoiceState" } },
-					"webhooks": { "type": "array", "items": { "$ref": "#/components/schemas/Webhook" } },
-					"mfa_level": { "type": "integer" },
-					"name": { "type": "string" },
-					"owner_id": { "type": "string" },
-					"owner": { "$ref": "#/components/schemas/User" },
-					"preferred_locale": { "type": "string" },
-					"premium_subscription_count": { "type": "integer" },
-					"premium_tier": { "type": "integer" },
-					"public_updates_channel_id": { "type": "string" },
-					"public_updates_channel": { "$ref": "#/components/schemas/Channel" },
-					"rules_channel_id": { "type": "string" },
-					"rules_channel": { "type": "string" },
-					"region": { "type": "string" },
-					"splash": { "type": "string" },
-					"system_channel_id": { "type": "string" },
-					"system_channel": { "$ref": "#/components/schemas/Channel" },
-					"system_channel_flags": { "type": "integer" },
-					"unavailable": { "type": "boolean" },
-					"vanity_url_code": { "type": "string" },
-					"vanity_url": { "$ref": "#/components/schemas/Invite" },
-					"verification_level": { "type": "integer" },
+					"afk_channel_id": {
+						"type": "string"
+					},
+					"afk_channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"afk_timeout": {
+						"type": "integer"
+					},
+					"bans": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Ban"
+						}
+					},
+					"banner": {
+						"type": "string"
+					},
+					"default_message_notifications": {
+						"type": "integer"
+					},
+					"description": {
+						"type": "string"
+					},
+					"discovery_splash": {
+						"type": "string"
+					},
+					"explicit_content_filter": {
+						"type": "integer"
+					},
+					"features": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"icon": {
+						"type": "string"
+					},
+					"large": {
+						"type": "boolean"
+					},
+					"max_members": {
+						"type": "integer"
+					},
+					"max_presences": {
+						"type": "integer"
+					},
+					"max_video_channel_users": {
+						"type": "integer"
+					},
+					"member_count": {
+						"type": "integer"
+					},
+					"presence_count": {
+						"type": "integer"
+					},
+					"members": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Member"
+						}
+					},
+					"roles": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Role"
+						}
+					},
+					"channels": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Channel"
+						}
+					},
+					"template_id": {
+						"type": "string"
+					},
+					"template": {
+						"$ref": "#/components/schemas/Template"
+					},
+					"emojis": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Emoji"
+						}
+					},
+					"stickers": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Sticker"
+						}
+					},
+					"invites": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Invite"
+						}
+					},
+					"voice_states": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/VoiceState"
+						}
+					},
+					"webhooks": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Webhook"
+						}
+					},
+					"mfa_level": {
+						"type": "integer"
+					},
+					"name": {
+						"type": "string"
+					},
+					"owner_id": {
+						"type": "string"
+					},
+					"owner": {
+						"$ref": "#/components/schemas/User"
+					},
+					"preferred_locale": {
+						"type": "string"
+					},
+					"premium_subscription_count": {
+						"type": "integer"
+					},
+					"premium_tier": {
+						"type": "integer"
+					},
+					"public_updates_channel_id": {
+						"type": "string"
+					},
+					"public_updates_channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"rules_channel_id": {
+						"type": "string"
+					},
+					"rules_channel": {
+						"type": "string"
+					},
+					"region": {
+						"type": "string"
+					},
+					"splash": {
+						"type": "string"
+					},
+					"system_channel_id": {
+						"type": "string"
+					},
+					"system_channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"system_channel_flags": {
+						"type": "integer"
+					},
+					"unavailable": {
+						"type": "boolean"
+					},
+					"vanity_url_code": {
+						"type": "string"
+					},
+					"vanity_url": {
+						"$ref": "#/components/schemas/Invite"
+					},
+					"verification_level": {
+						"type": "integer"
+					},
 					"welcome_screen": {
 						"type": "object",
 						"properties": {
-							"enabled": { "type": "boolean" },
-							"description": { "type": "string" },
+							"enabled": {
+								"type": "boolean"
+							},
+							"description": {
+								"type": "string"
+							},
 							"welcome_channels": {
 								"type": "array",
 								"items": {
 									"type": "object",
 									"properties": {
-										"description": { "type": "string" },
-										"emoji_id": { "type": "string" },
-										"emoji_name": { "type": "string" },
-										"channel_id": { "type": "string" }
+										"description": {
+											"type": "string"
+										},
+										"emoji_id": {
+											"type": "string"
+										},
+										"emoji_name": {
+											"type": "string"
+										},
+										"channel_id": {
+											"type": "string"
+										}
 									},
 									"additionalProperties": false,
 									"required": ["channel_id", "description", "emoji_name"]
@@ -364,10 +3433,18 @@
 						"additionalProperties": false,
 						"required": ["description", "enabled", "welcome_channels"]
 					},
-					"widget_channel_id": { "type": "string" },
-					"widget_channel": { "$ref": "#/components/schemas/Channel" },
-					"widget_enabled": { "type": "boolean" },
-					"id": { "type": "string" }
+					"widget_channel_id": {
+						"type": "string"
+					},
+					"widget_channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"widget_enabled": {
+						"type": "boolean"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": [
 					"bans",
@@ -393,29 +3470,82 @@
 			"Channel": {
 				"type": "object",
 				"properties": {
-					"created_at": { "type": "string", "format": "date-time" },
-					"name": { "type": "string" },
-					"type": { "$ref": "#/components/schemas/ChannelType" },
-					"recipients": { "type": "array", "items": { "$ref": "#/components/schemas/Recipient" } },
-					"last_message_id": { "type": "string" },
-					"last_message": { "$ref": "#/components/schemas/Message" },
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"parent_id": { "type": "string" },
-					"parent": { "$ref": "#/components/schemas/Channel" },
-					"owner_id": { "type": "string" },
-					"owner": { "$ref": "#/components/schemas/User" },
-					"last_pin_timestamp": { "type": "integer" },
-					"default_auto_archive_duration": { "type": "integer" },
-					"position": { "type": "integer" },
-					"permission_overwrites": { "type": "array", "items": { "$ref": "#/components/schemas/ChannelPermissionOverwrite" } },
-					"video_quality_mode": { "type": "integer" },
-					"bitrate": { "type": "integer" },
-					"user_limit": { "type": "integer" },
-					"nsfw": { "type": "boolean" },
-					"rate_limit_per_user": { "type": "integer" },
-					"topic": { "type": "string" },
-					"id": { "type": "string" }
+					"created_at": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"name": {
+						"type": "string"
+					},
+					"type": {
+						"$ref": "#/components/schemas/ChannelType"
+					},
+					"recipients": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Recipient"
+						}
+					},
+					"last_message_id": {
+						"type": "string"
+					},
+					"last_message": {
+						"$ref": "#/components/schemas/Message"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"parent_id": {
+						"type": "string"
+					},
+					"parent": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"owner_id": {
+						"type": "string"
+					},
+					"owner": {
+						"$ref": "#/components/schemas/User"
+					},
+					"last_pin_timestamp": {
+						"type": "integer"
+					},
+					"default_auto_archive_duration": {
+						"type": "integer"
+					},
+					"position": {
+						"type": "integer"
+					},
+					"permission_overwrites": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/ChannelPermissionOverwrite"
+						}
+					},
+					"video_quality_mode": {
+						"type": "integer"
+					},
+					"bitrate": {
+						"type": "integer"
+					},
+					"user_limit": {
+						"type": "integer"
+					},
+					"nsfw": {
+						"type": "boolean"
+					},
+					"rate_limit_per_user": {
+						"type": "integer"
+					},
+					"topic": {
+						"type": "string"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": [
 					"created_at",
@@ -431,78 +3561,198 @@
 					"type"
 				]
 			},
-			"ChannelType": { "enum": [0, 1, 2, 3, 4, 5, 6], "type": "number" },
+			"ChannelType": {
+				"enum": [0, 1, 2, 3, 4, 5, 6],
+				"type": "number"
+			},
 			"Recipient": {
 				"type": "object",
 				"properties": {
-					"channel_id": { "type": "string" },
-					"channel": { "$ref": "#/components/schemas/Channel" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"id": { "type": "string" }
+					"channel_id": {
+						"type": "string"
+					},
+					"channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["channel", "channel_id", "id", "user"]
 			},
 			"Message": {
 				"type": "object",
 				"properties": {
-					"id": { "type": "string" },
-					"channel_id": { "type": "string" },
-					"channel": { "$ref": "#/components/schemas/Channel" },
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"author_id": { "type": "string" },
-					"author": { "$ref": "#/components/schemas/User" },
-					"member_id": { "type": "string" },
-					"member": { "$ref": "#/components/schemas/Member" },
-					"webhook_id": { "type": "string" },
-					"webhook": { "$ref": "#/components/schemas/Webhook" },
-					"application_id": { "type": "string" },
-					"application": { "$ref": "#/components/schemas/Application" },
-					"content": { "type": "string" },
-					"timestamp": { "type": "string", "format": "date-time" },
-					"edited_timestamp": { "type": "string", "format": "date-time" },
-					"tts": { "type": "boolean" },
-					"mention_everyone": { "type": "boolean" },
-					"mentions": { "type": "array", "items": { "$ref": "#/components/schemas/User" } },
-					"mention_roles": { "type": "array", "items": { "$ref": "#/components/schemas/Role" } },
-					"mention_channels": { "type": "array", "items": { "$ref": "#/components/schemas/Channel" } },
-					"sticker_items": { "type": "array", "items": { "$ref": "#/components/schemas/Sticker" } },
-					"attachments": { "type": "array", "items": { "$ref": "#/components/schemas/Attachment" } },
-					"embeds": { "type": "array", "items": { "$ref": "#/components/schemas/Embed" } },
-					"reactions": { "type": "array", "items": { "$ref": "#/components/schemas/Reaction" } },
-					"nonce": { "type": "string" },
-					"pinned": { "type": "boolean" },
-					"type": { "$ref": "#/components/schemas/MessageType" },
+					"id": {
+						"type": "string"
+					},
+					"channel_id": {
+						"type": "string"
+					},
+					"channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"author_id": {
+						"type": "string"
+					},
+					"author": {
+						"$ref": "#/components/schemas/User"
+					},
+					"member_id": {
+						"type": "string"
+					},
+					"member": {
+						"$ref": "#/components/schemas/Member"
+					},
+					"webhook_id": {
+						"type": "string"
+					},
+					"webhook": {
+						"$ref": "#/components/schemas/Webhook"
+					},
+					"application_id": {
+						"type": "string"
+					},
+					"application": {
+						"$ref": "#/components/schemas/Application"
+					},
+					"content": {
+						"type": "string"
+					},
+					"timestamp": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"edited_timestamp": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"tts": {
+						"type": "boolean"
+					},
+					"mention_everyone": {
+						"type": "boolean"
+					},
+					"mentions": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/User"
+						}
+					},
+					"mention_roles": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Role"
+						}
+					},
+					"mention_channels": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Channel"
+						}
+					},
+					"sticker_items": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Sticker"
+						}
+					},
+					"attachments": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Attachment"
+						}
+					},
+					"embeds": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Embed"
+						}
+					},
+					"reactions": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Reaction"
+						}
+					},
+					"nonce": {
+						"type": "string"
+					},
+					"pinned": {
+						"type": "boolean"
+					},
+					"type": {
+						"$ref": "#/components/schemas/MessageType"
+					},
 					"activity": {
 						"type": "object",
-						"properties": { "type": { "type": "integer" }, "party_id": { "type": "string" } },
+						"properties": {
+							"type": {
+								"type": "integer"
+							},
+							"party_id": {
+								"type": "string"
+							}
+						},
 						"additionalProperties": false,
 						"required": ["party_id", "type"]
 					},
-					"flags": { "type": "string" },
+					"flags": {
+						"type": "string"
+					},
 					"message_reference": {
 						"type": "object",
 						"properties": {
-							"message_id": { "type": "string" },
-							"channel_id": { "type": "string" },
-							"guild_id": { "type": "string" }
+							"message_id": {
+								"type": "string"
+							},
+							"channel_id": {
+								"type": "string"
+							},
+							"guild_id": {
+								"type": "string"
+							}
 						},
 						"additionalProperties": false,
 						"required": ["message_id"]
 					},
-					"referenced_message": { "$ref": "#/components/schemas/Message" },
+					"referenced_message": {
+						"$ref": "#/components/schemas/Message"
+					},
 					"interaction": {
 						"type": "object",
 						"properties": {
-							"id": { "type": "string" },
-							"type": { "$ref": "#/components/schemas/InteractionType" },
-							"name": { "type": "string" },
-							"user_id": { "type": "string" }
+							"id": {
+								"type": "string"
+							},
+							"type": {
+								"$ref": "#/components/schemas/InteractionType"
+							},
+							"name": {
+								"type": "string"
+							},
+							"user_id": {
+								"type": "string"
+							}
 						},
 						"additionalProperties": false,
 						"required": ["id", "name", "type", "user_id"]
 					},
-					"components": { "type": "array", "items": { "$ref": "#/components/schemas/MessageComponent" } }
+					"components": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/MessageComponent"
+						}
+					}
 				},
 				"required": [
 					"application_id",
@@ -524,44 +3774,100 @@
 			"Member": {
 				"type": "object",
 				"properties": {
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"nick": { "type": "string" },
-					"roles": { "type": "array", "items": { "$ref": "#/components/schemas/Role" } },
-					"joined_at": { "type": "string", "format": "date-time" },
-					"premium_since": { "type": "integer" },
-					"deaf": { "type": "boolean" },
-					"mute": { "type": "boolean" },
-					"pending": { "type": "boolean" },
-					"settings": { "$ref": "#/components/schemas/UserGuildSettings" },
-					"id": { "type": "string" }
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"nick": {
+						"type": "string"
+					},
+					"roles": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Role"
+						}
+					},
+					"joined_at": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"premium_since": {
+						"type": "integer"
+					},
+					"deaf": {
+						"type": "boolean"
+					},
+					"mute": {
+						"type": "boolean"
+					},
+					"pending": {
+						"type": "boolean"
+					},
+					"settings": {
+						"$ref": "#/components/schemas/UserGuildSettings"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["deaf", "guild", "guild_id", "id", "joined_at", "mute", "pending", "roles", "settings", "user", "user_id"]
 			},
 			"Role": {
 				"type": "object",
 				"properties": {
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"color": { "type": "integer" },
-					"hoist": { "type": "boolean" },
-					"managed": { "type": "boolean" },
-					"mentionable": { "type": "boolean" },
-					"name": { "type": "string" },
-					"permissions": { "type": "string" },
-					"position": { "type": "integer" },
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"color": {
+						"type": "integer"
+					},
+					"hoist": {
+						"type": "boolean"
+					},
+					"managed": {
+						"type": "boolean"
+					},
+					"mentionable": {
+						"type": "boolean"
+					},
+					"name": {
+						"type": "string"
+					},
+					"permissions": {
+						"type": "string"
+					},
+					"position": {
+						"type": "integer"
+					},
 					"tags": {
 						"type": "object",
 						"properties": {
-							"bot_id": { "type": "string" },
-							"integration_id": { "type": "string" },
-							"premium_subscriber": { "type": "boolean" }
+							"bot_id": {
+								"type": "string"
+							},
+							"integration_id": {
+								"type": "string"
+							},
+							"premium_subscriber": {
+								"type": "boolean"
+							}
 						},
 						"additionalProperties": false
 					},
-					"id": { "type": "string" }
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["color", "guild", "guild_id", "hoist", "id", "managed", "mentionable", "name", "permissions", "position"]
 			},
@@ -573,22 +3879,44 @@
 						"items": {
 							"type": "object",
 							"properties": {
-								"channel_id": { "type": "string" },
-								"message_notifications": { "type": "integer" },
-								"mute_config": { "$ref": "#/components/schemas/MuteConfig" },
-								"muted": { "type": "boolean" }
+								"channel_id": {
+									"type": "string"
+								},
+								"message_notifications": {
+									"type": "integer"
+								},
+								"mute_config": {
+									"$ref": "#/components/schemas/MuteConfig"
+								},
+								"muted": {
+									"type": "boolean"
+								}
 							},
 							"additionalProperties": false,
 							"required": ["channel_id", "message_notifications", "mute_config", "muted"]
 						}
 					},
-					"message_notifications": { "type": "integer" },
-					"mobile_push": { "type": "boolean" },
-					"mute_config": { "$ref": "#/components/schemas/MuteConfig" },
-					"muted": { "type": "boolean" },
-					"suppress_everyone": { "type": "boolean" },
-					"suppress_roles": { "type": "boolean" },
-					"version": { "type": "integer" }
+					"message_notifications": {
+						"type": "integer"
+					},
+					"mobile_push": {
+						"type": "boolean"
+					},
+					"mute_config": {
+						"$ref": "#/components/schemas/MuteConfig"
+					},
+					"muted": {
+						"type": "boolean"
+					},
+					"suppress_everyone": {
+						"type": "boolean"
+					},
+					"suppress_roles": {
+						"type": "boolean"
+					},
+					"version": {
+						"type": "integer"
+					}
 				},
 				"required": [
 					"channel_overrides",
@@ -603,27 +3931,64 @@
 			},
 			"MuteConfig": {
 				"type": "object",
-				"properties": { "end_time": { "type": "integer" }, "selected_time_window": { "type": "integer" } },
+				"properties": {
+					"end_time": {
+						"type": "integer"
+					},
+					"selected_time_window": {
+						"type": "integer"
+					}
+				},
 				"required": ["end_time", "selected_time_window"]
 			},
 			"Webhook": {
 				"type": "object",
 				"properties": {
-					"id": { "type": "string" },
-					"type": { "$ref": "#/components/schemas/WebhookType" },
-					"name": { "type": "string" },
-					"avatar": { "type": "string" },
-					"token": { "type": "string" },
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"channel_id": { "type": "string" },
-					"channel": { "$ref": "#/components/schemas/Channel" },
-					"application_id": { "type": "string" },
-					"application": { "$ref": "#/components/schemas/Application" },
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"source_guild_id": { "type": "string" },
-					"source_guild": { "$ref": "#/components/schemas/Guild" }
+					"id": {
+						"type": "string"
+					},
+					"type": {
+						"$ref": "#/components/schemas/WebhookType"
+					},
+					"name": {
+						"type": "string"
+					},
+					"avatar": {
+						"type": "string"
+					},
+					"token": {
+						"type": "string"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"channel_id": {
+						"type": "string"
+					},
+					"channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"application_id": {
+						"type": "string"
+					},
+					"application": {
+						"$ref": "#/components/schemas/Application"
+					},
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"source_guild_id": {
+						"type": "string"
+					},
+					"source_guild": {
+						"$ref": "#/components/schemas/Guild"
+					}
 				},
 				"required": [
 					"application",
@@ -640,98 +4005,225 @@
 					"user_id"
 				]
 			},
-			"WebhookType": { "enum": [1, 2], "type": "number" },
+			"WebhookType": {
+				"enum": [1, 2],
+				"type": "number"
+			},
 			"Application": {
 				"type": "object",
 				"properties": {
-					"name": { "type": "string" },
-					"icon": { "type": "string" },
-					"description": { "type": "string" },
-					"rpc_origins": { "type": "array", "items": { "type": "string" } },
-					"bot_public": { "type": "boolean" },
-					"bot_require_code_grant": { "type": "boolean" },
-					"terms_of_service_url": { "type": "string" },
-					"privacy_policy_url": { "type": "string" },
-					"owner": { "$ref": "#/components/schemas/User" },
-					"summary": { "type": "string" },
-					"verify_key": { "type": "string" },
-					"team": { "$ref": "#/components/schemas/Team" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"primary_sku_id": { "type": "string" },
-					"slug": { "type": "string" },
-					"cover_image": { "type": "string" },
-					"flags": { "type": "string" },
-					"id": { "type": "string" }
+					"name": {
+						"type": "string"
+					},
+					"icon": {
+						"type": "string"
+					},
+					"description": {
+						"type": "string"
+					},
+					"rpc_origins": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"bot_public": {
+						"type": "boolean"
+					},
+					"bot_require_code_grant": {
+						"type": "boolean"
+					},
+					"terms_of_service_url": {
+						"type": "string"
+					},
+					"privacy_policy_url": {
+						"type": "string"
+					},
+					"owner": {
+						"$ref": "#/components/schemas/User"
+					},
+					"summary": {
+						"type": "string"
+					},
+					"verify_key": {
+						"type": "string"
+					},
+					"team": {
+						"$ref": "#/components/schemas/Team"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"primary_sku_id": {
+						"type": "string"
+					},
+					"slug": {
+						"type": "string"
+					},
+					"cover_image": {
+						"type": "string"
+					},
+					"flags": {
+						"type": "string"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["bot_public", "bot_require_code_grant", "description", "flags", "guild", "id", "name", "verify_key"]
 			},
 			"Sticker": {
 				"type": "object",
 				"properties": {
-					"name": { "type": "string" },
-					"description": { "type": "string" },
-					"tags": { "type": "string" },
-					"pack_id": { "type": "string" },
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"type": { "$ref": "#/components/schemas/StickerType" },
-					"format_type": { "$ref": "#/components/schemas/StickerFormatType" },
-					"id": { "type": "string" }
+					"name": {
+						"type": "string"
+					},
+					"description": {
+						"type": "string"
+					},
+					"tags": {
+						"type": "string"
+					},
+					"pack_id": {
+						"type": "string"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"type": {
+						"$ref": "#/components/schemas/StickerType"
+					},
+					"format_type": {
+						"$ref": "#/components/schemas/StickerFormatType"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["format_type", "id", "name", "pack_id", "tags", "type"]
 			},
-			"StickerType": { "enum": [1, 2], "type": "number" },
-			"StickerFormatType": { "enum": [1, 2, 3], "type": "number" },
+			"StickerType": {
+				"enum": [1, 2],
+				"type": "number"
+			},
+			"StickerFormatType": {
+				"enum": [1, 2, 3],
+				"type": "number"
+			},
 			"Attachment": {
 				"type": "object",
 				"properties": {
-					"filename": { "type": "string" },
-					"size": { "type": "integer" },
-					"url": { "type": "string" },
-					"proxy_url": { "type": "string" },
-					"height": { "type": "integer" },
-					"width": { "type": "integer" },
-					"content_type": { "type": "string" },
-					"message_id": { "type": "string" },
-					"message": { "$ref": "#/components/schemas/Message" },
-					"id": { "type": "string" }
+					"filename": {
+						"type": "string"
+					},
+					"size": {
+						"type": "integer"
+					},
+					"url": {
+						"type": "string"
+					},
+					"proxy_url": {
+						"type": "string"
+					},
+					"height": {
+						"type": "integer"
+					},
+					"width": {
+						"type": "integer"
+					},
+					"content_type": {
+						"type": "string"
+					},
+					"message_id": {
+						"type": "string"
+					},
+					"message": {
+						"$ref": "#/components/schemas/Message"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["filename", "id", "message", "message_id", "proxy_url", "size", "url"]
 			},
 			"Embed": {
 				"type": "object",
 				"properties": {
-					"title": { "type": "string" },
-					"type": { "$ref": "#/components/schemas/EmbedType" },
-					"description": { "type": "string" },
-					"url": { "type": "string" },
-					"timestamp": { "type": "string", "format": "date-time" },
-					"color": { "type": "integer" },
+					"title": {
+						"type": "string"
+					},
+					"type": {
+						"enum": ["article", "gifv", "image", "link", "rich", "video"],
+						"type": "string"
+					},
+					"description": {
+						"type": "string"
+					},
+					"url": {
+						"type": "string"
+					},
+					"timestamp": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"color": {
+						"type": "integer"
+					},
 					"footer": {
 						"type": "object",
 						"properties": {
-							"text": { "type": "string" },
-							"icon_url": { "type": "string" },
-							"proxy_icon_url": { "type": "string" }
+							"text": {
+								"type": "string"
+							},
+							"icon_url": {
+								"type": "string"
+							},
+							"proxy_icon_url": {
+								"type": "string"
+							}
 						},
 						"additionalProperties": false,
 						"required": ["text"]
 					},
-					"image": { "$ref": "#/components/schemas/EmbedImage" },
-					"thumbnail": { "$ref": "#/components/schemas/EmbedImage" },
-					"video": { "$ref": "#/components/schemas/EmbedImage" },
+					"image": {
+						"$ref": "#/components/schemas/EmbedImage"
+					},
+					"thumbnail": {
+						"$ref": "#/components/schemas/EmbedImage"
+					},
+					"video": {
+						"$ref": "#/components/schemas/EmbedImage"
+					},
 					"provider": {
 						"type": "object",
-						"properties": { "name": { "type": "string" }, "url": { "type": "string" } },
+						"properties": {
+							"name": {
+								"type": "string"
+							},
+							"url": {
+								"type": "string"
+							}
+						},
 						"additionalProperties": false
 					},
 					"author": {
 						"type": "object",
 						"properties": {
-							"name": { "type": "string" },
-							"url": { "type": "string" },
-							"icon_url": { "type": "string" },
-							"proxy_icon_url": { "type": "string" }
+							"name": {
+								"type": "string"
+							},
+							"url": {
+								"type": "string"
+							},
+							"icon_url": {
+								"type": "string"
+							},
+							"proxy_icon_url": {
+								"type": "string"
+							}
 						},
 						"additionalProperties": false
 					},
@@ -739,94 +4231,214 @@
 						"type": "array",
 						"items": {
 							"type": "object",
-							"properties": { "name": { "type": "string" }, "value": { "type": "string" }, "inline": { "type": "boolean" } },
+							"properties": {
+								"name": {
+									"type": "string"
+								},
+								"value": {
+									"type": "string"
+								},
+								"inline": {
+									"type": "boolean"
+								}
+							},
 							"additionalProperties": false,
 							"required": ["name", "value"]
 						}
 					}
 				}
 			},
-			"EmbedType": { "enum": ["article", "gifv", "image", "link", "rich", "video"], "type": "string" },
+			"EmbedType": {
+				"enum": ["article", "gifv", "image", "link", "rich", "video"],
+				"type": "string"
+			},
 			"EmbedImage": {
 				"type": "object",
 				"properties": {
-					"url": { "type": "string" },
-					"proxy_url": { "type": "string" },
-					"height": { "type": "integer" },
-					"width": { "type": "integer" }
+					"url": {
+						"type": "string"
+					},
+					"proxy_url": {
+						"type": "string"
+					},
+					"height": {
+						"type": "integer"
+					},
+					"width": {
+						"type": "integer"
+					}
 				}
 			},
 			"Reaction": {
 				"type": "object",
 				"properties": {
-					"count": { "type": "integer" },
-					"emoji": { "$ref": "#/components/schemas/PartialEmoji" },
-					"user_ids": { "type": "array", "items": { "type": "string" } }
+					"count": {
+						"type": "integer"
+					},
+					"emoji": {
+						"$ref": "#/components/schemas/PartialEmoji"
+					},
+					"user_ids": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					}
 				},
 				"required": ["count", "emoji", "user_ids"]
 			},
 			"PartialEmoji": {
 				"type": "object",
-				"properties": { "id": { "type": "string" }, "name": { "type": "string" }, "animated": { "type": "boolean" } },
+				"properties": {
+					"id": {
+						"type": "string"
+					},
+					"name": {
+						"type": "string"
+					},
+					"animated": {
+						"type": "boolean"
+					}
+				},
 				"required": ["name"]
 			},
-			"MessageType": { "enum": [0, 1, 10, 11, 12, 14, 15, 19, 2, 20, 3, 4, 5, 6, 7, 8, 9], "type": "number" },
-			"InteractionType": { "enum": [1, 2], "type": "number" },
+			"MessageType": {
+				"enum": [0, 1, 10, 11, 12, 14, 15, 19, 2, 20, 3, 4, 5, 6, 7, 8, 9],
+				"type": "number"
+			},
+			"InteractionType": {
+				"enum": [1, 2],
+				"type": "number"
+			},
 			"MessageComponent": {
 				"type": "object",
 				"properties": {
-					"type": { "type": "integer" },
-					"style": { "type": "integer" },
-					"label": { "type": "string" },
-					"emoji": { "$ref": "#/components/schemas/PartialEmoji" },
-					"custom_id": { "type": "string" },
-					"url": { "type": "string" },
-					"disabled": { "type": "boolean" },
-					"components": { "type": "array", "items": { "$ref": "#/components/schemas/MessageComponent" } }
+					"type": {
+						"type": "integer"
+					},
+					"style": {
+						"type": "integer"
+					},
+					"label": {
+						"type": "string"
+					},
+					"emoji": {
+						"$ref": "#/components/schemas/PartialEmoji"
+					},
+					"custom_id": {
+						"type": "string"
+					},
+					"url": {
+						"type": "string"
+					},
+					"disabled": {
+						"type": "boolean"
+					},
+					"components": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/MessageComponent"
+						}
+					}
 				},
 				"required": ["components", "type"]
 			},
 			"ChannelPermissionOverwrite": {
 				"type": "object",
 				"properties": {
-					"allow": { "type": "number" },
-					"deny": { "type": "number" },
-					"id": { "type": "string" },
-					"type": { "$ref": "#/components/schemas/ChannelPermissionOverwriteType" }
+					"allow": {
+						"type": "number"
+					},
+					"deny": {
+						"type": "number"
+					},
+					"id": {
+						"type": "string"
+					},
+					"type": {
+						"$ref": "#/components/schemas/ChannelPermissionOverwriteType"
+					}
 				},
 				"required": ["allow", "deny", "id", "type"]
 			},
-			"ChannelPermissionOverwriteType": { "enum": [0, 1], "type": "number" },
+			"ChannelPermissionOverwriteType": {
+				"enum": [0, 1],
+				"type": "number"
+			},
 			"Ban": {
 				"type": "object",
 				"properties": {
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"executor_id": { "type": "string" },
-					"executor": { "$ref": "#/components/schemas/User" },
-					"ip": { "type": "string" },
-					"reason": { "type": "string" },
-					"id": { "type": "string" }
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"executor_id": {
+						"type": "string"
+					},
+					"executor": {
+						"$ref": "#/components/schemas/User"
+					},
+					"ip": {
+						"type": "string"
+					},
+					"reason": {
+						"type": "string"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["executor", "executor_id", "guild", "guild_id", "id", "ip", "user", "user_id"]
 			},
 			"Template": {
 				"type": "object",
 				"properties": {
-					"code": { "type": "string" },
-					"name": { "type": "string" },
-					"description": { "type": "string" },
-					"usage_count": { "type": "integer" },
-					"creator_id": { "type": "string" },
-					"creator": { "$ref": "#/components/schemas/User" },
-					"created_at": { "type": "string", "format": "date-time" },
-					"updated_at": { "type": "string", "format": "date-time" },
-					"source_guild_id": { "type": "string" },
-					"source_guild": { "$ref": "#/components/schemas/Guild" },
-					"serialized_source_guild": { "$ref": "#/components/schemas/Guild" },
-					"id": { "type": "string" }
+					"code": {
+						"type": "string"
+					},
+					"name": {
+						"type": "string"
+					},
+					"description": {
+						"type": "string"
+					},
+					"usage_count": {
+						"type": "integer"
+					},
+					"creator_id": {
+						"type": "string"
+					},
+					"creator": {
+						"$ref": "#/components/schemas/User"
+					},
+					"created_at": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"updated_at": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"source_guild_id": {
+						"type": "string"
+					},
+					"source_guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"serialized_source_guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": [
 					"code",
@@ -844,37 +4456,89 @@
 			"Emoji": {
 				"type": "object",
 				"properties": {
-					"animated": { "type": "boolean" },
-					"available": { "type": "boolean" },
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"managed": { "type": "boolean" },
-					"name": { "type": "string" },
-					"require_colons": { "type": "boolean" },
-					"id": { "type": "string" }
+					"animated": {
+						"type": "boolean"
+					},
+					"available": {
+						"type": "boolean"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"managed": {
+						"type": "boolean"
+					},
+					"name": {
+						"type": "string"
+					},
+					"require_colons": {
+						"type": "boolean"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["animated", "available", "guild", "guild_id", "id", "managed", "name", "require_colons"]
 			},
 			"Invite": {
 				"type": "object",
 				"properties": {
-					"code": { "type": "string" },
-					"temporary": { "type": "boolean" },
-					"uses": { "type": "integer" },
-					"max_uses": { "type": "integer" },
-					"max_age": { "type": "integer" },
-					"created_at": { "type": "string", "format": "date-time" },
-					"expires_at": { "type": "string", "format": "date-time" },
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"channel_id": { "type": "string" },
-					"channel": { "$ref": "#/components/schemas/Channel" },
-					"inviter_id": { "type": "string" },
-					"inviter": { "$ref": "#/components/schemas/User" },
-					"target_user_id": { "type": "string" },
-					"target_user": { "type": "string" },
-					"target_user_type": { "type": "integer" },
-					"id": { "type": "string" }
+					"code": {
+						"type": "string"
+					},
+					"temporary": {
+						"type": "boolean"
+					},
+					"uses": {
+						"type": "integer"
+					},
+					"max_uses": {
+						"type": "integer"
+					},
+					"max_age": {
+						"type": "integer"
+					},
+					"created_at": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"expires_at": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"channel_id": {
+						"type": "string"
+					},
+					"channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"inviter_id": {
+						"type": "string"
+					},
+					"inviter": {
+						"$ref": "#/components/schemas/User"
+					},
+					"target_user_id": {
+						"type": "string"
+					},
+					"target_user": {
+						"type": "string"
+					},
+					"target_user_type": {
+						"type": "integer"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": [
 					"channel",
@@ -897,21 +4561,51 @@
 			"VoiceState": {
 				"type": "object",
 				"properties": {
-					"guild_id": { "type": "string" },
-					"guild": { "$ref": "#/components/schemas/Guild" },
-					"channel_id": { "type": "string" },
-					"channel": { "$ref": "#/components/schemas/Channel" },
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"session_id": { "type": "string" },
-					"deaf": { "type": "boolean" },
-					"mute": { "type": "boolean" },
-					"self_deaf": { "type": "boolean" },
-					"self_mute": { "type": "boolean" },
-					"self_stream": { "type": "boolean" },
-					"self_video": { "type": "boolean" },
-					"suppress": { "type": "boolean" },
-					"id": { "type": "string" }
+					"guild_id": {
+						"type": "string"
+					},
+					"guild": {
+						"$ref": "#/components/schemas/Guild"
+					},
+					"channel_id": {
+						"type": "string"
+					},
+					"channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"session_id": {
+						"type": "string"
+					},
+					"deaf": {
+						"type": "boolean"
+					},
+					"mute": {
+						"type": "boolean"
+					},
+					"self_deaf": {
+						"type": "boolean"
+					},
+					"self_mute": {
+						"type": "boolean"
+					},
+					"self_stream": {
+						"type": "boolean"
+					},
+					"self_video": {
+						"type": "boolean"
+					},
+					"suppress": {
+						"type": "boolean"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": [
 					"channel",
@@ -939,151 +4633,386 @@
 			"AuditLogChange": {
 				"type": "object",
 				"properties": {
-					"new_value": { "$ref": "#/components/schemas/AuditLogChangeValue" },
-					"old_value": { "$ref": "#/components/schemas/AuditLogChangeValue" },
-					"key": { "type": "string" }
+					"new_value": {
+						"$ref": "#/components/schemas/AuditLogChangeValue"
+					},
+					"old_value": {
+						"$ref": "#/components/schemas/AuditLogChangeValue"
+					},
+					"key": {
+						"type": "string"
+					}
 				},
 				"required": ["key"]
 			},
 			"AuditLogChangeValue": {
 				"type": "object",
 				"properties": {
-					"name": { "type": "string" },
-					"description": { "type": "string" },
-					"icon_hash": { "type": "string" },
-					"splash_hash": { "type": "string" },
-					"discovery_splash_hash": { "type": "string" },
-					"banner_hash": { "type": "string" },
-					"owner_id": { "type": "string" },
-					"region": { "type": "string" },
-					"preferred_locale": { "type": "string" },
-					"afk_channel_id": { "type": "string" },
-					"afk_timeout": { "type": "integer" },
-					"rules_channel_id": { "type": "string" },
-					"public_updates_channel_id": { "type": "string" },
-					"mfa_level": { "type": "integer" },
-					"verification_level": { "type": "integer" },
-					"explicit_content_filter": { "type": "integer" },
-					"default_message_notifications": { "type": "integer" },
-					"vanity_url_code": { "type": "string" },
-					"$add": { "type": "array", "items": { "type": "object", "properties": {} } },
-					"$remove": { "type": "array", "items": { "type": "object", "properties": {} } },
-					"prune_delete_days": { "type": "integer" },
-					"widget_enabled": { "type": "boolean" },
-					"widget_channel_id": { "type": "string" },
-					"system_channel_id": { "type": "string" },
-					"position": { "type": "integer" },
-					"topic": { "type": "string" },
-					"bitrate": { "type": "integer" },
-					"permission_overwrites": { "type": "array", "items": { "$ref": "#/components/schemas/ChannelPermissionOverwrite" } },
-					"nsfw": { "type": "boolean" },
-					"application_id": { "type": "string" },
-					"rate_limit_per_user": { "type": "integer" },
-					"permissions": { "type": "string" },
-					"color": { "type": "integer" },
-					"hoist": { "type": "boolean" },
-					"mentionable": { "type": "boolean" },
-					"allow": { "type": "string" },
-					"deny": { "type": "string" },
-					"code": { "type": "string" },
-					"channel_id": { "type": "string" },
-					"inviter_id": { "type": "string" },
-					"max_uses": { "type": "integer" },
-					"uses": { "type": "integer" },
-					"max_age": { "type": "integer" },
-					"temporary": { "type": "boolean" },
-					"deaf": { "type": "boolean" },
-					"mute": { "type": "boolean" },
-					"nick": { "type": "string" },
-					"avatar_hash": { "type": "string" },
-					"id": { "type": "string" },
-					"type": { "type": "integer" },
-					"enable_emoticons": { "type": "boolean" },
-					"expire_behavior": { "type": "integer" },
-					"expire_grace_period": { "type": "integer" },
-					"user_limit": { "type": "integer" }
+					"name": {
+						"type": "string"
+					},
+					"description": {
+						"type": "string"
+					},
+					"icon_hash": {
+						"type": "string"
+					},
+					"splash_hash": {
+						"type": "string"
+					},
+					"discovery_splash_hash": {
+						"type": "string"
+					},
+					"banner_hash": {
+						"type": "string"
+					},
+					"owner_id": {
+						"type": "string"
+					},
+					"region": {
+						"type": "string"
+					},
+					"preferred_locale": {
+						"type": "string"
+					},
+					"afk_channel_id": {
+						"type": "string"
+					},
+					"afk_timeout": {
+						"type": "integer"
+					},
+					"rules_channel_id": {
+						"type": "string"
+					},
+					"public_updates_channel_id": {
+						"type": "string"
+					},
+					"mfa_level": {
+						"type": "integer"
+					},
+					"verification_level": {
+						"type": "integer"
+					},
+					"explicit_content_filter": {
+						"type": "integer"
+					},
+					"default_message_notifications": {
+						"type": "integer"
+					},
+					"vanity_url_code": {
+						"type": "string"
+					},
+					"$add": {
+						"type": "array",
+						"items": {
+							"type": "object",
+							"properties": {}
+						}
+					},
+					"$remove": {
+						"type": "array",
+						"items": {
+							"type": "object",
+							"properties": {}
+						}
+					},
+					"prune_delete_days": {
+						"type": "integer"
+					},
+					"widget_enabled": {
+						"type": "boolean"
+					},
+					"widget_channel_id": {
+						"type": "string"
+					},
+					"system_channel_id": {
+						"type": "string"
+					},
+					"position": {
+						"type": "integer"
+					},
+					"topic": {
+						"type": "string"
+					},
+					"bitrate": {
+						"type": "integer"
+					},
+					"permission_overwrites": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/ChannelPermissionOverwrite"
+						}
+					},
+					"nsfw": {
+						"type": "boolean"
+					},
+					"application_id": {
+						"type": "string"
+					},
+					"rate_limit_per_user": {
+						"type": "integer"
+					},
+					"permissions": {
+						"type": "string"
+					},
+					"color": {
+						"type": "integer"
+					},
+					"hoist": {
+						"type": "boolean"
+					},
+					"mentionable": {
+						"type": "boolean"
+					},
+					"allow": {
+						"type": "string"
+					},
+					"deny": {
+						"type": "string"
+					},
+					"code": {
+						"type": "string"
+					},
+					"channel_id": {
+						"type": "string"
+					},
+					"inviter_id": {
+						"type": "string"
+					},
+					"max_uses": {
+						"type": "integer"
+					},
+					"uses": {
+						"type": "integer"
+					},
+					"max_age": {
+						"type": "integer"
+					},
+					"temporary": {
+						"type": "boolean"
+					},
+					"deaf": {
+						"type": "boolean"
+					},
+					"mute": {
+						"type": "boolean"
+					},
+					"nick": {
+						"type": "string"
+					},
+					"avatar_hash": {
+						"type": "string"
+					},
+					"id": {
+						"type": "string"
+					},
+					"type": {
+						"type": "integer"
+					},
+					"enable_emoticons": {
+						"type": "boolean"
+					},
+					"expire_behavior": {
+						"type": "integer"
+					},
+					"expire_grace_period": {
+						"type": "integer"
+					},
+					"user_limit": {
+						"type": "integer"
+					}
 				}
 			},
 			"AuditLog": {
 				"type": "object",
 				"properties": {
-					"target": { "$ref": "#/components/schemas/User" },
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"action_type": { "$ref": "#/components/schemas/AuditLogEvents" },
+					"target": {
+						"$ref": "#/components/schemas/User"
+					},
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"action_type": {
+						"$ref": "#/components/schemas/AuditLogEvents"
+					},
 					"options": {
 						"type": "object",
 						"properties": {
-							"delete_member_days": { "type": "string" },
-							"members_removed": { "type": "string" },
-							"channel_id": { "type": "string" },
-							"messaged_id": { "type": "string" },
-							"count": { "type": "string" },
-							"id": { "type": "string" },
-							"type": { "type": "string" },
-							"role_name": { "type": "string" }
+							"delete_member_days": {
+								"type": "string"
+							},
+							"members_removed": {
+								"type": "string"
+							},
+							"channel_id": {
+								"type": "string"
+							},
+							"messaged_id": {
+								"type": "string"
+							},
+							"count": {
+								"type": "string"
+							},
+							"id": {
+								"type": "string"
+							},
+							"type": {
+								"type": "string"
+							},
+							"role_name": {
+								"type": "string"
+							}
 						},
 						"additionalProperties": false
 					},
-					"changes": { "type": "array", "items": { "$ref": "#/components/schemas/AuditLogChange" } },
-					"reason": { "type": "string" },
-					"id": { "type": "string" }
+					"changes": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/AuditLogChange"
+						}
+					},
+					"reason": {
+						"type": "string"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["action_type", "changes", "id", "user", "user_id"]
 			},
 			"ReadState": {
 				"type": "object",
 				"properties": {
-					"channel_id": { "type": "string" },
-					"channel": { "$ref": "#/components/schemas/Channel" },
-					"user_id": { "type": "string" },
-					"user": { "$ref": "#/components/schemas/User" },
-					"last_message_id": { "type": "string" },
-					"last_message": { "$ref": "#/components/schemas/Message" },
-					"last_pin_timestamp": { "type": "string", "format": "date-time" },
-					"mention_count": { "type": "integer" },
-					"manual": { "type": "boolean" },
-					"id": { "type": "string" }
+					"channel_id": {
+						"type": "string"
+					},
+					"channel": {
+						"$ref": "#/components/schemas/Channel"
+					},
+					"user_id": {
+						"type": "string"
+					},
+					"user": {
+						"$ref": "#/components/schemas/User"
+					},
+					"last_message_id": {
+						"type": "string"
+					},
+					"last_message": {
+						"$ref": "#/components/schemas/Message"
+					},
+					"last_pin_timestamp": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"mention_count": {
+						"type": "integer"
+					},
+					"manual": {
+						"type": "boolean"
+					},
+					"id": {
+						"type": "string"
+					}
 				},
 				"required": ["channel", "channel_id", "id", "last_message_id", "manual", "mention_count", "user", "user_id"]
 			},
 			"UserPublic": {
 				"type": "object",
 				"properties": {
-					"username": { "type": "string" },
-					"discriminator": { "type": "string" },
-					"id": { "type": "string" },
-					"public_flags": { "type": "string" },
-					"avatar": { "type": "string" },
-					"accent_color": { "type": "integer" },
-					"banner": { "type": "string" },
-					"bio": { "type": "string" },
-					"bot": { "type": "boolean" }
+					"username": {
+						"type": "string"
+					},
+					"discriminator": {
+						"type": "string"
+					},
+					"id": {
+						"type": "string"
+					},
+					"public_flags": {
+						"type": "integer"
+					},
+					"avatar": {
+						"type": "string"
+					},
+					"accent_color": {
+						"type": "integer"
+					},
+					"banner": {
+						"type": "string"
+					},
+					"bio": {
+						"type": "string"
+					},
+					"bot": {
+						"type": "boolean"
+					}
 				},
 				"required": ["bio", "bot", "discriminator", "id", "public_flags", "username"]
 			},
 			"UserPrivate": {
 				"type": "object",
 				"properties": {
-					"locale": { "type": "string" },
-					"disabled": { "type": "boolean" },
-					"username": { "type": "string" },
-					"discriminator": { "type": "string" },
-					"id": { "type": "string" },
-					"public_flags": { "type": "string" },
-					"avatar": { "type": "string" },
-					"accent_color": { "type": "integer" },
-					"banner": { "type": "string" },
-					"bio": { "type": "string" },
-					"bot": { "type": "boolean" },
-					"flags": { "type": "string" },
-					"mfa_enabled": { "type": "boolean" },
-					"email": { "type": "string" },
-					"phone": { "type": "string" },
-					"verified": { "type": "boolean" },
-					"nsfw_allowed": { "type": "boolean" },
-					"premium": { "type": "boolean" },
-					"premium_type": { "type": "integer" }
+					"locale": {
+						"type": "string"
+					},
+					"disabled": {
+						"type": "boolean"
+					},
+					"username": {
+						"type": "string"
+					},
+					"discriminator": {
+						"type": "string"
+					},
+					"id": {
+						"type": "string"
+					},
+					"public_flags": {
+						"type": "string"
+					},
+					"avatar": {
+						"type": "string"
+					},
+					"accent_color": {
+						"type": "integer"
+					},
+					"banner": {
+						"type": "string"
+					},
+					"bio": {
+						"type": "string"
+					},
+					"bot": {
+						"type": "boolean"
+					},
+					"flags": {
+						"type": "string"
+					},
+					"mfa_enabled": {
+						"type": "boolean"
+					},
+					"email": {
+						"type": "string"
+					},
+					"phone": {
+						"type": "string"
+					},
+					"verified": {
+						"type": "boolean"
+					},
+					"nsfw_allowed": {
+						"type": "boolean"
+					},
+					"premium": {
+						"type": "boolean"
+					},
+					"premium_type": {
+						"type": "integer"
+					}
 				},
 				"required": [
 					"bio",
@@ -1104,50 +5033,111 @@
 			},
 			"BanCreateSchema": {
 				"type": "object",
-				"properties": { "delete_message_days": { "type": "string" }, "reason": { "type": "string" } }
+				"properties": {
+					"delete_message_days": {
+						"type": "string"
+					},
+					"reason": {
+						"type": "string"
+					}
+				}
 			},
 			"DmChannelCreateSchema": {
 				"type": "object",
-				"properties": { "name": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } } },
+				"properties": {
+					"name": {
+						"type": "string"
+					},
+					"recipients": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					}
+				},
 				"required": ["recipients"]
 			},
 			"ChannelModifySchema": {
 				"type": "object",
 				"properties": {
-					"name": { "type": "string" },
-					"type": { "type": "integer" },
-					"topic": { "type": "string" },
-					"bitrate": { "type": "integer" },
-					"user_limit": { "type": "integer" },
-					"rate_limit_per_user": { "type": "integer" },
-					"position": { "type": "integer" },
+					"name": {
+						"maxLength": 100,
+						"type": "string"
+					},
+					"type": {
+						"enum": [0, 1, 10, 11, 12, 13, 2, 3, 4, 5, 6],
+						"type": "number"
+					},
+					"topic": {
+						"type": "string"
+					},
+					"icon": {
+						"type": "string",
+						"nullable": true
+					},
+					"bitrate": {
+						"type": "integer"
+					},
+					"user_limit": {
+						"type": "integer"
+					},
+					"rate_limit_per_user": {
+						"type": "integer"
+					},
+					"position": {
+						"type": "integer"
+					},
 					"permission_overwrites": {
 						"type": "array",
 						"items": {
 							"type": "object",
 							"properties": {
-								"id": { "type": "string" },
-								"type": { "type": "integer" },
-								"allow": { "type": "number" },
-								"deny": { "type": "number" }
+								"id": {
+									"type": "string"
+								},
+								"type": {
+									"$ref": "#/components/schemas/ChannelPermissionOverwriteType"
+								},
+								"allow": {
+									"type": "number"
+								},
+								"deny": {
+									"type": "number"
+								}
 							},
 							"additionalProperties": false,
 							"required": ["allow", "deny", "id", "type"]
 						}
 					},
-					"parent_id": { "type": "string" },
-					"id": { "type": "string" },
-					"nsfw": { "type": "boolean" },
-					"rtc_region": { "type": "string" },
-					"default_auto_archive_duration": { "type": "integer" }
-				},
-				"required": ["name", "type"]
+					"parent_id": {
+						"type": "string"
+					},
+					"id": {
+						"type": "string"
+					},
+					"nsfw": {
+						"type": "boolean"
+					},
+					"rtc_region": {
+						"type": "string"
+					},
+					"default_auto_archive_duration": {
+						"type": "integer"
+					}
+				}
 			},
 			"ChannelGuildPositionUpdateSchema": {
 				"type": "array",
 				"items": {
 					"type": "object",
-					"properties": { "id": { "type": "string" }, "position": { "type": "integer" } },
+					"properties": {
+						"id": {
+							"type": "string"
+						},
+						"position": {
+							"type": "integer"
+						}
+					},
 					"additionalProperties": false,
 					"required": ["id"]
 				}
@@ -1155,52 +5145,131 @@
 			"EmojiCreateSchema": {
 				"type": "object",
 				"properties": {
-					"name": { "type": "string" },
-					"image": { "type": "string" },
-					"roles": { "type": "array", "items": { "type": "string" } }
+					"name": {
+						"type": "string"
+					},
+					"image": {
+						"type": "string"
+					},
+					"roles": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					}
 				},
 				"required": ["image", "name"]
 			},
 			"GuildCreateSchema": {
 				"type": "object",
 				"properties": {
-					"name": { "type": "string" },
-					"region": { "type": "string" },
-					"icon": { "type": "string" },
-					"channels": { "type": "array", "items": { "$ref": "#/components/requestBodies/ChannelModifySchema" } },
-					"guild_template_code": { "type": "string" },
-					"system_channel_id": { "type": "string" },
-					"rules_channel_id": { "type": "string" }
+					"name": {
+						"maxLength": 100,
+						"type": "string"
+					},
+					"region": {
+						"type": "string"
+					},
+					"icon": {
+						"type": "string",
+						"nullable": true
+					},
+					"channels": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/ChannelModifySchema"
+						}
+					},
+					"guild_template_code": {
+						"type": "string"
+					},
+					"system_channel_id": {
+						"type": "string"
+					},
+					"rules_channel_id": {
+						"type": "string"
+					}
 				},
 				"required": ["name"]
 			},
 			"GuildUpdateSchema": {
 				"type": "object",
 				"properties": {
-					"banner": { "type": "string" },
-					"splash": { "type": "string" },
-					"description": { "type": "string" },
-					"features": { "type": "array", "items": { "type": "string" } },
-					"verification_level": { "type": "integer" },
-					"default_message_notifications": { "type": "integer" },
-					"system_channel_flags": { "type": "integer" },
-					"explicit_content_filter": { "type": "integer" },
-					"public_updates_channel_id": { "type": "string" },
-					"afk_timeout": { "type": "integer" },
-					"afk_channel_id": { "type": "string" },
-					"preferred_locale": { "type": "string" },
-					"name": { "type": "string" },
-					"region": { "type": "string" },
-					"icon": { "type": "string" },
-					"guild_template_code": { "type": "string" },
-					"system_channel_id": { "type": "string" },
-					"rules_channel_id": { "type": "string" }
+					"banner": {
+						"type": "string",
+						"nullable": true
+					},
+					"splash": {
+						"type": "string",
+						"nullable": true
+					},
+					"description": {
+						"type": "string"
+					},
+					"features": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"verification_level": {
+						"type": "integer"
+					},
+					"default_message_notifications": {
+						"type": "integer"
+					},
+					"system_channel_flags": {
+						"type": "integer"
+					},
+					"explicit_content_filter": {
+						"type": "integer"
+					},
+					"public_updates_channel_id": {
+						"type": "string"
+					},
+					"afk_timeout": {
+						"type": "integer"
+					},
+					"afk_channel_id": {
+						"type": "string"
+					},
+					"preferred_locale": {
+						"type": "string"
+					},
+					"name": {
+						"maxLength": 100,
+						"type": "string"
+					},
+					"region": {
+						"type": "string"
+					},
+					"icon": {
+						"type": "string",
+						"nullable": true
+					},
+					"guild_template_code": {
+						"type": "string"
+					},
+					"system_channel_id": {
+						"type": "string"
+					},
+					"rules_channel_id": {
+						"type": "string"
+					}
 				},
 				"required": ["name"]
 			},
 			"GuildTemplateCreateSchema": {
 				"type": "object",
-				"properties": { "name": { "type": "string" }, "avatar": { "type": "string" } },
+				"properties": {
+					"name": {
+						"type": "string"
+					},
+					"avatar": {
+						"type": "string",
+						"nullable": true
+					}
+				},
 				"required": ["name"]
 			},
 			"GuildUpdateWelcomeScreenSchema": {
@@ -1211,225 +5280,411 @@
 						"items": {
 							"type": "object",
 							"properties": {
-								"channel_id": { "type": "string" },
-								"description": { "type": "string" },
-								"emoji_id": { "type": "string" },
-								"emoji_name": { "type": "string" }
+								"channel_id": {
+									"type": "string"
+								},
+								"description": {
+									"type": "string"
+								},
+								"emoji_id": {
+									"type": "string"
+								},
+								"emoji_name": {
+									"type": "string"
+								}
 							},
 							"additionalProperties": false,
 							"required": ["channel_id", "description", "emoji_name"]
 						}
 					},
-					"enabled": { "type": "boolean" },
-					"description": { "type": "string" }
+					"enabled": {
+						"type": "boolean"
+					},
+					"description": {
+						"type": "string"
+					}
 				}
 			},
 			"InviteCreateSchema": {
 				"type": "object",
 				"properties": {
-					"target_user_id": { "type": "string" },
-					"target_type": { "type": "string" },
-					"validate": { "type": "string" },
-					"max_age": { "type": "integer" },
-					"max_uses": { "type": "integer" },
-					"temporary": { "type": "boolean" },
-					"unique": { "type": "boolean" },
-					"target_user": { "type": "string" },
-					"target_user_type": { "type": "integer" }
+					"target_user_id": {
+						"type": "string"
+					},
+					"target_type": {
+						"type": "string"
+					},
+					"validate": {
+						"type": "string"
+					},
+					"max_age": {
+						"type": "integer"
+					},
+					"max_uses": {
+						"type": "integer"
+					},
+					"temporary": {
+						"type": "boolean"
+					},
+					"unique": {
+						"type": "boolean"
+					},
+					"target_user": {
+						"type": "string"
+					},
+					"target_user_type": {
+						"type": "integer"
+					}
 				}
 			},
 			"MemberCreateSchema": {
 				"type": "object",
 				"properties": {
-					"id": { "type": "string" },
-					"nick": { "type": "string" },
-					"guild_id": { "type": "string" },
-					"joined_at": { "type": "string", "format": "date-time" }
+					"id": {
+						"type": "string"
+					},
+					"nick": {
+						"type": "string"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"joined_at": {
+						"type": "string",
+						"format": "date-time"
+					}
 				},
 				"required": ["guild_id", "id", "joined_at", "nick"]
 			},
-			"MemberNickChangeSchema": { "type": "object", "properties": { "nick": { "type": "string" } }, "required": ["nick"] },
-			"MemberChangeSchema": { "type": "object", "properties": { "roles": { "type": "array", "items": { "type": "string" } } } },
+			"MemberNickChangeSchema": {
+				"type": "object",
+				"properties": {
+					"nick": {
+						"type": "string"
+					}
+				},
+				"required": ["nick"]
+			},
+			"MemberChangeSchema": {
+				"type": "object",
+				"properties": {
+					"roles": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					}
+				}
+			},
 			"MessageCreateSchema": {
 				"type": "object",
 				"properties": {
-					"content": { "type": "string" },
-					"nonce": { "type": "string" },
-					"tts": { "type": "boolean" },
-					"flags": { "type": "string" },
+					"content": {
+						"type": "string"
+					},
+					"nonce": {
+						"type": "string"
+					},
+					"tts": {
+						"type": "boolean"
+					},
+					"flags": {
+						"type": "string"
+					},
+					"embeds": {
+						"type": "array",
+						"items": {
+							"$ref": "#/components/schemas/Embed"
+						}
+					},
 					"embed": {
-						"additionalProperties": false,
+						"$ref": "#/components/schemas/Embed"
+					},
+					"allowed_mentions": {
 						"type": "object",
 						"properties": {
-							"title": { "type": "string" },
-							"type": { "$ref": "#/components/requestBodies/EmbedType" },
-							"description": { "type": "string" },
-							"url": { "type": "string" },
-							"timestamp": { "type": "string" },
-							"color": { "type": "integer" },
-							"footer": {
-								"type": "object",
-								"properties": {
-									"text": { "type": "string" },
-									"icon_url": { "type": "string" },
-									"proxy_icon_url": { "type": "string" }
-								},
-								"additionalProperties": false,
-								"required": ["text"]
-							},
-							"image": { "$ref": "#/components/requestBodies/EmbedImage" },
-							"thumbnail": { "$ref": "#/components/requestBodies/EmbedImage" },
-							"video": { "$ref": "#/components/requestBodies/EmbedImage" },
-							"provider": {
-								"type": "object",
-								"properties": { "name": { "type": "string" }, "url": { "type": "string" } },
-								"additionalProperties": false
+							"parse": {
+								"type": "array",
+								"items": {
+									"type": "string"
+								}
 							},
-							"author": {
-								"type": "object",
-								"properties": {
-									"name": { "type": "string" },
-									"url": { "type": "string" },
-									"icon_url": { "type": "string" },
-									"proxy_icon_url": { "type": "string" }
-								},
-								"additionalProperties": false
+							"roles": {
+								"type": "array",
+								"items": {
+									"type": "string"
+								}
 							},
-							"fields": {
+							"users": {
 								"type": "array",
 								"items": {
-									"type": "object",
-									"properties": {
-										"name": { "type": "string" },
-										"value": { "type": "string" },
-										"inline": { "type": "boolean" }
-									},
-									"additionalProperties": false,
-									"required": ["name", "value"]
+									"type": "string"
 								}
+							},
+							"replied_user": {
+								"type": "boolean"
 							}
-						}
-					},
-					"allowed_mentions": {
-						"type": "object",
-						"properties": {
-							"parse": { "type": "array", "items": { "type": "string" } },
-							"roles": { "type": "array", "items": { "type": "string" } },
-							"users": { "type": "array", "items": { "type": "string" } },
-							"replied_user": { "type": "boolean" }
 						},
 						"additionalProperties": false
 					},
 					"message_reference": {
 						"type": "object",
 						"properties": {
-							"message_id": { "type": "string" },
-							"channel_id": { "type": "string" },
-							"guild_id": { "type": "string" },
-							"fail_if_not_exists": { "type": "boolean" }
+							"message_id": {
+								"type": "string"
+							},
+							"channel_id": {
+								"type": "string"
+							},
+							"guild_id": {
+								"type": "string"
+							},
+							"fail_if_not_exists": {
+								"type": "boolean"
+							}
 						},
 						"additionalProperties": false,
 						"required": ["channel_id", "message_id"]
 					},
-					"payload_json": { "type": "string" },
-					"file": {}
+					"payload_json": {
+						"type": "string"
+					},
+					"file": {},
+					"attachments": {
+						"type": "array",
+						"items": {}
+					}
 				}
 			},
 			"RoleModifySchema": {
 				"type": "object",
 				"properties": {
-					"name": { "type": "string" },
-					"permissions": { "type": "number" },
-					"color": { "type": "integer" },
-					"hoist": { "type": "boolean" },
-					"mentionable": { "type": "boolean" },
-					"position": { "type": "integer" }
+					"name": {
+						"type": "string"
+					},
+					"permissions": {
+						"type": "number"
+					},
+					"color": {
+						"type": "integer"
+					},
+					"hoist": {
+						"type": "boolean"
+					},
+					"mentionable": {
+						"type": "boolean"
+					},
+					"position": {
+						"type": "integer"
+					}
 				}
 			},
 			"TemplateCreateSchema": {
 				"type": "object",
-				"properties": { "name": { "type": "string" }, "description": { "type": "string" } },
+				"properties": {
+					"name": {
+						"type": "string"
+					},
+					"description": {
+						"type": "string"
+					}
+				},
 				"required": ["name"]
 			},
 			"TemplateModifySchema": {
 				"type": "object",
-				"properties": { "name": { "type": "string" }, "description": { "type": "string" } },
+				"properties": {
+					"name": {
+						"type": "string"
+					},
+					"description": {
+						"type": "string"
+					}
+				},
 				"required": ["name"]
 			},
 			"UserModifySchema": {
 				"type": "object",
 				"properties": {
-					"username": { "type": "string" },
-					"avatar": { "type": "string" },
-					"bio": { "type": "string" },
-					"accent_color": { "type": "integer" },
-					"banner": { "type": "string" },
-					"password": { "type": "string" },
-					"new_password": { "type": "string" },
-					"code": { "type": "string" }
+					"username": {
+						"minLength": 1,
+						"maxLength": 100,
+						"type": "string"
+					},
+					"avatar": {
+						"type": "string",
+						"nullable": true
+					},
+					"bio": {
+						"maxLength": 1024,
+						"type": "string"
+					},
+					"accent_color": {
+						"type": "integer"
+					},
+					"banner": {
+						"type": "string",
+						"nullable": true
+					},
+					"password": {
+						"type": "string"
+					},
+					"new_password": {
+						"type": "string"
+					},
+					"code": {
+						"type": "string"
+					}
 				}
 			},
 			"UserSettingsSchema": {
 				"type": "object",
 				"properties": {
-					"afk_timeout": { "type": "integer" },
-					"allow_accessibility_detection": { "type": "boolean" },
-					"animate_emoji": { "type": "boolean" },
-					"animate_stickers": { "type": "integer" },
-					"contact_sync_enabled": { "type": "boolean" },
-					"convert_emoticons": { "type": "boolean" },
+					"afk_timeout": {
+						"type": "integer"
+					},
+					"allow_accessibility_detection": {
+						"type": "boolean"
+					},
+					"animate_emoji": {
+						"type": "boolean"
+					},
+					"animate_stickers": {
+						"type": "integer"
+					},
+					"contact_sync_enabled": {
+						"type": "boolean"
+					},
+					"convert_emoticons": {
+						"type": "boolean"
+					},
 					"custom_status": {
 						"type": "object",
 						"properties": {
-							"emoji_id": { "type": "string" },
-							"emoji_name": { "type": "string" },
-							"expires_at": { "type": "integer" },
-							"text": { "type": "string" }
+							"emoji_id": {
+								"type": "string"
+							},
+							"emoji_name": {
+								"type": "string"
+							},
+							"expires_at": {
+								"type": "integer"
+							},
+							"text": {
+								"type": "string"
+							}
 						},
 						"additionalProperties": false
 					},
-					"default_guilds_restricted": { "type": "boolean" },
-					"detect_platform_accounts": { "type": "boolean" },
-					"developer_mode": { "type": "boolean" },
-					"disable_games_tab": { "type": "boolean" },
-					"enable_tts_command": { "type": "boolean" },
-					"explicit_content_filter": { "type": "integer" },
+					"default_guilds_restricted": {
+						"type": "boolean"
+					},
+					"detect_platform_accounts": {
+						"type": "boolean"
+					},
+					"developer_mode": {
+						"type": "boolean"
+					},
+					"disable_games_tab": {
+						"type": "boolean"
+					},
+					"enable_tts_command": {
+						"type": "boolean"
+					},
+					"explicit_content_filter": {
+						"type": "integer"
+					},
 					"friend_source_flags": {
 						"type": "object",
-						"properties": { "all": { "type": "boolean" } },
+						"properties": {
+							"all": {
+								"type": "boolean"
+							}
+						},
 						"additionalProperties": false,
 						"required": ["all"]
 					},
-					"gateway_connected": { "type": "boolean" },
-					"gif_auto_play": { "type": "boolean" },
+					"gateway_connected": {
+						"type": "boolean"
+					},
+					"gif_auto_play": {
+						"type": "boolean"
+					},
 					"guild_folders": {
 						"type": "array",
 						"items": {
 							"type": "object",
 							"properties": {
-								"color": { "type": "integer" },
-								"guild_ids": { "type": "array", "items": { "type": "string" } },
-								"id": { "type": "integer" },
-								"name": { "type": "string" }
+								"color": {
+									"type": "integer"
+								},
+								"guild_ids": {
+									"type": "array",
+									"items": {
+										"type": "string"
+									}
+								},
+								"id": {
+									"type": "integer"
+								},
+								"name": {
+									"type": "string"
+								}
 							},
 							"additionalProperties": false,
 							"required": ["color", "guild_ids", "id", "name"]
 						}
 					},
-					"guild_positions": { "type": "array", "items": { "type": "string" } },
-					"inline_attachment_media": { "type": "boolean" },
-					"inline_embed_media": { "type": "boolean" },
-					"locale": { "type": "string" },
-					"message_display_compact": { "type": "boolean" },
-					"native_phone_integration_enabled": { "type": "boolean" },
-					"render_embeds": { "type": "boolean" },
-					"render_reactions": { "type": "boolean" },
-					"restricted_guilds": { "type": "array", "items": { "type": "string" } },
-					"show_current_game": { "type": "boolean" },
-					"status": { "enum": ["dnd", "idle", "offline", "online"], "type": "string" },
-					"stream_notifications_enabled": { "type": "boolean" },
-					"theme": { "enum": ["dark", "white"], "type": "string" },
-					"timezone_offset": { "type": "integer" }
+					"guild_positions": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"inline_attachment_media": {
+						"type": "boolean"
+					},
+					"inline_embed_media": {
+						"type": "boolean"
+					},
+					"locale": {
+						"type": "string"
+					},
+					"message_display_compact": {
+						"type": "boolean"
+					},
+					"native_phone_integration_enabled": {
+						"type": "boolean"
+					},
+					"render_embeds": {
+						"type": "boolean"
+					},
+					"render_reactions": {
+						"type": "boolean"
+					},
+					"restricted_guilds": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					},
+					"show_current_game": {
+						"type": "boolean"
+					},
+					"status": {
+						"enum": ["dnd", "idle", "offline", "online"],
+						"type": "string"
+					},
+					"stream_notifications_enabled": {
+						"type": "boolean"
+					},
+					"theme": {
+						"enum": ["dark", "white"],
+						"type": "string"
+					},
+					"timezone_offset": {
+						"type": "integer"
+					}
 				},
 				"required": [
 					"afk_timeout",
@@ -1467,8 +5722,263 @@
 			},
 			"WidgetModifySchema": {
 				"type": "object",
-				"properties": { "enabled": { "type": "boolean" }, "channel_id": { "type": "string" } },
+				"properties": {
+					"enabled": {
+						"type": "boolean"
+					},
+					"channel_id": {
+						"type": "string"
+					}
+				},
 				"required": ["channel_id", "enabled"]
+			},
+			"RegisterSchema": {
+				"type": "object",
+				"properties": {
+					"username": {
+						"minLength": 2,
+						"maxLength": 32,
+						"type": "string"
+					},
+					"password": {
+						"minLength": 1,
+						"maxLength": 72,
+						"type": "string"
+					},
+					"consent": {
+						"type": "boolean"
+					},
+					"email": {
+						"format": "email",
+						"type": "string"
+					},
+					"fingerprint": {
+						"type": "string"
+					},
+					"invite": {
+						"type": "string"
+					},
+					"date_of_birth": {
+						"type": "string"
+					},
+					"gift_code_sku_id": {
+						"type": "string"
+					},
+					"captcha_key": {
+						"type": "string"
+					}
+				},
+				"required": ["consent", "username"]
+			},
+			"LoginSchema": {
+				"type": "object",
+				"properties": {
+					"login": {
+						"type": "string"
+					},
+					"password": {
+						"type": "string"
+					},
+					"undelete": {
+						"type": "boolean"
+					},
+					"captcha_key": {
+						"type": "string"
+					},
+					"login_source": {
+						"type": "string"
+					},
+					"gift_code_sku_id": {
+						"type": "string"
+					}
+				},
+				"required": ["login", "password"]
+			},
+			"MessageAcknowledgeSchema": {
+				"type": "object",
+				"properties": {
+					"manual": {
+						"type": "boolean"
+					},
+					"mention_count": {
+						"type": "integer"
+					}
+				}
+			},
+			"BulkDeleteSchema": {
+				"type": "object",
+				"properties": {
+					"messages": {
+						"type": "array",
+						"items": {
+							"type": "string"
+						}
+					}
+				},
+				"required": ["messages"]
+			},
+			"ChannelPermissionOverwriteSchema": {
+				"type": "object",
+				"properties": {
+					"allow": {
+						"type": "number"
+					},
+					"deny": {
+						"type": "number"
+					},
+					"id": {
+						"type": "string"
+					},
+					"type": {
+						"$ref": "#/components/schemas/ChannelPermissionOverwriteType"
+					}
+				},
+				"required": ["allow", "deny", "id", "type"]
+			},
+			"WebhookCreateSchema": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"maxLength": 80,
+						"type": "string"
+					},
+					"avatar": {
+						"type": "string"
+					}
+				},
+				"required": ["avatar", "name"]
+			},
+			"ChannelReorderSchema": {
+				"type": "array",
+				"items": {
+					"type": "object",
+					"properties": {
+						"id": {
+							"type": "string"
+						},
+						"position": {
+							"type": "integer"
+						},
+						"lock_permissions": {
+							"type": "boolean"
+						},
+						"parent_id": {
+							"type": "string"
+						}
+					},
+					"additionalProperties": false,
+					"required": ["id"]
+				}
+			},
+			"RolePositionUpdateSchema": {
+				"type": "array",
+				"items": {
+					"type": "object",
+					"properties": {
+						"id": {
+							"type": "string"
+						},
+						"position": {
+							"type": "integer"
+						}
+					},
+					"additionalProperties": false,
+					"required": ["id", "position"]
+				}
+			},
+			"VanityUrlSchema": {
+				"type": "object",
+				"properties": {
+					"code": {
+						"minLength": 1,
+						"maxLength": 20,
+						"type": "string"
+					}
+				}
+			},
+			"VoiceStateUpdateSchema": {
+				"type": "object",
+				"properties": {
+					"channel_id": {
+						"type": "string"
+					},
+					"guild_id": {
+						"type": "string"
+					},
+					"suppress": {
+						"type": "boolean"
+					},
+					"request_to_speak_timestamp": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"self_mute": {
+						"type": "boolean"
+					},
+					"self_deaf": {
+						"type": "boolean"
+					},
+					"self_video": {
+						"type": "boolean"
+					}
+				},
+				"required": ["channel_id"]
+			},
+			"UserProfileResponse": {
+				"type": "object",
+				"properties": {
+					"user": {
+						"$ref": "#/components/schemas/UserPublic"
+					},
+					"connected_accounts": {
+						"$ref": "#/components/schemas/PublicConnectedAccount"
+					},
+					"premium_guild_since": {
+						"type": "string",
+						"format": "date-time"
+					},
+					"premium_since": {
+						"type": "string",
+						"format": "date-time"
+					}
+				},
+				"required": ["connected_accounts", "user"]
+			},
+			"RelationshipPutSchema": {
+				"type": "object",
+				"properties": {
+					"type": {
+						"enum": [1, 2, 3, 4],
+						"type": "number"
+					}
+				}
+			},
+			"RelationshipPostSchema": {
+				"type": "object",
+				"properties": {
+					"discriminator": {
+						"type": "string"
+					},
+					"username": {
+						"type": "string"
+					}
+				},
+				"required": ["discriminator", "username"]
+			},
+			"PublicConnectedAccount": {
+				"type": "object",
+				"properties": {
+					"name": {
+						"type": "string"
+					},
+					"type": {
+						"type": "string"
+					},
+					"verifie": {
+						"type": "boolean"
+					}
+				},
+				"required": ["name", "type", "verifie"]
 			}
 		},
 		"requestBodies": {},
@@ -1482,4 +5992,4 @@
 		"links": {},
 		"callbacks": {}
 	}
-}
\ No newline at end of file
+}
diff --git a/api/assets/responses.json b/api/assets/responses.json
deleted file mode 100644
index 35645d73..00000000
--- a/api/assets/responses.json
+++ /dev/null
@@ -1,90 +0,0 @@
-{
-    "UserProfileResponse": {
-        "type": "object",
-        "properties": {
-            "user": {
-                "$ref": "#/definitions/UserPublic"
-            },
-            "connected_accounts": {
-                "$ref": "#/definitions/PublicConnectedAccount"
-            },
-            "premium_guild_since": {
-                "type": "string",
-                "format": "date-time"
-            },
-            "premium_since": {
-                "type": "string",
-                "format": "date-time"
-            }
-        },
-        "additionalProperties": false,
-        "required": [
-            "connected_accounts",
-            "user"
-        ],
-        "definitions": {
-            "UserPublic": {
-                "type": "object",
-                "properties": {
-                    "username": {
-                        "type": "string"
-                    },
-                    "discriminator": {
-                        "type": "string"
-                    },
-                    "id": {
-                        "type": "string"
-                    },
-                    "public_flags": {
-                        "type": "string"
-                    },
-                    "avatar": {
-                        "type": "string"
-                    },
-                    "accent_color": {
-                        "type": "integer"
-                    },
-                    "banner": {
-                        "type": "string"
-                    },
-                    "bio": {
-                        "type": "string"
-                    },
-                    "bot": {
-                        "type": "boolean"
-                    }
-                },
-                "additionalProperties": false,
-                "required": [
-                    "bio",
-                    "bot",
-                    "discriminator",
-                    "id",
-                    "public_flags",
-                    "username"
-                ]
-            },
-            "PublicConnectedAccount": {
-                "type": "object",
-                "properties": {
-                    "name": {
-                        "type": "string"
-                    },
-                    "type": {
-                        "type": "string"
-                    },
-                    "verifie": {
-                        "type": "boolean"
-                    }
-                },
-                "additionalProperties": false,
-                "required": [
-                    "name",
-                    "type",
-                    "verifie"
-                ]
-            }
-        },
-        "$schema": "http://json-schema.org/draft-07/schema#"
-    }
-}
\ No newline at end of file
diff --git a/api/assets/schemas.json b/api/assets/schemas.json
index cc45ebb3..76ad3b16 100644
--- a/api/assets/schemas.json
+++ b/api/assets/schemas.json
@@ -385,6 +385,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -698,6 +759,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -960,6 +1082,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -1201,6 +1384,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -1445,6 +1689,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -1698,6 +2003,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -1944,6 +2310,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -2185,6 +2612,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -2438,6 +2926,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -2704,6 +3253,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -3009,6 +3619,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -3250,6 +3921,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -3491,6 +4223,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -3744,6 +4537,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -3992,6 +4846,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -4236,6 +5151,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -4480,6 +5456,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -4720,6 +5757,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -4980,6 +6078,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -5247,6 +6406,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -5492,6 +6712,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -5739,6 +7020,381 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
+            }
+        },
+        "$schema": "http://json-schema.org/draft-07/schema#"
+    },
+    "UserProfileResponse": {
+        "type": "object",
+        "properties": {
+            "user": {
+                "$ref": "#/definitions/UserPublic"
+            },
+            "connected_accounts": {
+                "$ref": "#/definitions/PublicConnectedAccount"
+            },
+            "premium_guild_since": {
+                "type": "string",
+                "format": "date-time"
+            },
+            "premium_since": {
+                "type": "string",
+                "format": "date-time"
+            }
+        },
+        "additionalProperties": false,
+        "required": [
+            "connected_accounts",
+            "user"
+        ],
+        "definitions": {
+            "ChannelPermissionOverwriteType": {
+                "enum": [
+                    0,
+                    1
+                ],
+                "type": "number"
+            },
+            "Embed": {
+                "type": "object",
+                "properties": {
+                    "title": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "enum": [
+                            "article",
+                            "gifv",
+                            "image",
+                            "link",
+                            "rich",
+                            "video"
+                        ],
+                        "type": "string"
+                    },
+                    "description": {
+                        "type": "string"
+                    },
+                    "url": {
+                        "type": "string"
+                    },
+                    "timestamp": {
+                        "type": "string",
+                        "format": "date-time"
+                    },
+                    "color": {
+                        "type": "integer"
+                    },
+                    "footer": {
+                        "type": "object",
+                        "properties": {
+                            "text": {
+                                "type": "string"
+                            },
+                            "icon_url": {
+                                "type": "string"
+                            },
+                            "proxy_icon_url": {
+                                "type": "string"
+                            }
+                        },
+                        "additionalProperties": false,
+                        "required": [
+                            "text"
+                        ]
+                    },
+                    "image": {
+                        "$ref": "#/definitions/EmbedImage"
+                    },
+                    "thumbnail": {
+                        "$ref": "#/definitions/EmbedImage"
+                    },
+                    "video": {
+                        "$ref": "#/definitions/EmbedImage"
+                    },
+                    "provider": {
+                        "type": "object",
+                        "properties": {
+                            "name": {
+                                "type": "string"
+                            },
+                            "url": {
+                                "type": "string"
+                            }
+                        },
+                        "additionalProperties": false
+                    },
+                    "author": {
+                        "type": "object",
+                        "properties": {
+                            "name": {
+                                "type": "string"
+                            },
+                            "url": {
+                                "type": "string"
+                            },
+                            "icon_url": {
+                                "type": "string"
+                            },
+                            "proxy_icon_url": {
+                                "type": "string"
+                            }
+                        },
+                        "additionalProperties": false
+                    },
+                    "fields": {
+                        "type": "array",
+                        "items": {
+                            "type": "object",
+                            "properties": {
+                                "name": {
+                                    "type": "string"
+                                },
+                                "value": {
+                                    "type": "string"
+                                },
+                                "inline": {
+                                    "type": "boolean"
+                                }
+                            },
+                            "additionalProperties": false,
+                            "required": [
+                                "name",
+                                "value"
+                            ]
+                        }
+                    }
+                },
+                "additionalProperties": false
+            },
+            "EmbedImage": {
+                "type": "object",
+                "properties": {
+                    "url": {
+                        "type": "string"
+                    },
+                    "proxy_url": {
+                        "type": "string"
+                    },
+                    "height": {
+                        "type": "integer"
+                    },
+                    "width": {
+                        "type": "integer"
+                    }
+                },
+                "additionalProperties": false
+            },
+            "ChannelModifySchema": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "maxLength": 100,
+                        "type": "string"
+                    },
+                    "type": {
+                        "enum": [
+                            0,
+                            1,
+                            10,
+                            11,
+                            12,
+                            13,
+                            2,
+                            3,
+                            4,
+                            5,
+                            6
+                        ],
+                        "type": "number"
+                    },
+                    "topic": {
+                        "type": "string"
+                    },
+                    "icon": {
+                        "type": [
+                            "null",
+                            "string"
+                        ]
+                    },
+                    "bitrate": {
+                        "type": "integer"
+                    },
+                    "user_limit": {
+                        "type": "integer"
+                    },
+                    "rate_limit_per_user": {
+                        "type": "integer"
+                    },
+                    "position": {
+                        "type": "integer"
+                    },
+                    "permission_overwrites": {
+                        "type": "array",
+                        "items": {
+                            "type": "object",
+                            "properties": {
+                                "id": {
+                                    "type": "string"
+                                },
+                                "type": {
+                                    "$ref": "#/definitions/ChannelPermissionOverwriteType"
+                                },
+                                "allow": {
+                                    "type": "bigint"
+                                },
+                                "deny": {
+                                    "type": "bigint"
+                                }
+                            },
+                            "additionalProperties": false,
+                            "required": [
+                                "allow",
+                                "deny",
+                                "id",
+                                "type"
+                            ]
+                        }
+                    },
+                    "parent_id": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "nsfw": {
+                        "type": "boolean"
+                    },
+                    "rtc_region": {
+                        "type": "string"
+                    },
+                    "default_auto_archive_duration": {
+                        "type": "integer"
+                    }
+                },
+                "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -5986,6 +7642,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -6254,6 +7971,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -6498,6 +8276,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -6743,6 +8582,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
@@ -7171,6 +9071,67 @@
                     }
                 },
                 "additionalProperties": false
+            },
+            "UserPublic": {
+                "type": "object",
+                "properties": {
+                    "username": {
+                        "type": "string"
+                    },
+                    "discriminator": {
+                        "type": "string"
+                    },
+                    "id": {
+                        "type": "string"
+                    },
+                    "public_flags": {
+                        "type": "integer"
+                    },
+                    "avatar": {
+                        "type": "string"
+                    },
+                    "accent_color": {
+                        "type": "integer"
+                    },
+                    "banner": {
+                        "type": "string"
+                    },
+                    "bio": {
+                        "type": "string"
+                    },
+                    "bot": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "bio",
+                    "bot",
+                    "discriminator",
+                    "id",
+                    "public_flags",
+                    "username"
+                ]
+            },
+            "PublicConnectedAccount": {
+                "type": "object",
+                "properties": {
+                    "name": {
+                        "type": "string"
+                    },
+                    "type": {
+                        "type": "string"
+                    },
+                    "verifie": {
+                        "type": "boolean"
+                    }
+                },
+                "additionalProperties": false,
+                "required": [
+                    "name",
+                    "type",
+                    "verifie"
+                ]
             }
         },
         "$schema": "http://json-schema.org/draft-07/schema#"
diff --git a/api/jest/getRouteDescriptions.ts b/api/jest/getRouteDescriptions.js
index 33922899..4f8d2e75 100644
--- a/api/jest/getRouteDescriptions.ts
+++ b/api/jest/getRouteDescriptions.js
@@ -1,11 +1,15 @@
-import { traverseDirectory } from "lambert-server";
-import path from "path";
-import express from "express";
-import * as RouteUtility from "../dist/util/route";
-import { RouteOptions } from "../dist/util/route";
+const { traverseDirectory } = require("lambert-server");
+const path = require("path");
+const express = require("express");
+const RouteUtility = require("../dist/util/route");
 const Router = express.Router;
 
-const routes = new Map<string, RouteUtility.RouteOptions>();
+/**
+ * Some documentation.
+ *
+ * @type {Map<string, RouteUtility.RouteOptions>}
+ */
+const routes = new Map();
 let currentPath = "";
 let currentFile = "";
 const methods = ["get", "post", "put", "delete", "patch"];
@@ -13,13 +17,13 @@ const methods = ["get", "post", "put", "delete", "patch"];
 function registerPath(file, method, prefix, path, ...args) {
 	const urlPath = prefix + path;
 	const sourceFile = file.replace("/dist/", "/src/").replace(".js", ".ts");
-	const opts: RouteOptions = args.find((x) => typeof x === "object");
+	const opts = args.find((x) => typeof x === "object");
 	if (opts) {
 		routes.set(urlPath + "|" + method, opts); // @ts-ignore
 		opts.file = sourceFile;
 		// console.log(method, urlPath, opts);
 	} else {
-		console.log(`${sourceFile}\nrouter.${method}("${path}") is missing the "route()" description middleware\n`, args);
+		console.log(`${sourceFile}\nrouter.${method}("${path}") is missing the "route()" description middleware\n`);
 	}
 }
 
@@ -42,7 +46,7 @@ express.Router = (opts) => {
 	return router;
 };
 
-export default function getRouteDescriptions() {
+module.exports = function getRouteDescriptions() {
 	const root = path.join(__dirname, "..", "dist", "routes", "/");
 	traverseDirectory({ dirname: root, recursive: true }, (file) => {
 		currentFile = file;
@@ -52,7 +56,11 @@ export default function getRouteDescriptions() {
 		if (path.endsWith("/index")) path = path.slice(0, "/index".length * -1); // delete index from path
 		currentPath = path;
 
-		require(file);
+		try {
+			require(file);
+		} catch (error) {
+			console.error("error loading file " + file, error);
+		}
 	});
 	return routes;
-}
+};
diff --git a/api/scripts/generate_test_schema.ts b/api/scripts/generate_body_schema.js
index eed77738..22d0b02e 100644
--- a/api/scripts/generate_test_schema.ts
+++ b/api/scripts/generate_body_schema.js
@@ -4,9 +4,9 @@ import path from "path";
 import fs from "fs";
 import * as TJS from "typescript-json-schema";
 import "missing-native-js-functions";
-const schemaPath = path.join(__dirname, "..", "assets", "responses.json");
+const schemaPath = path.join(__dirname, "..", "assets", "schemas.json");
 
-const settings: TJS.PartialArgs = {
+const settings = {
 	required: true,
 	ignoreErrors: true,
 	excludePrivate: true,
@@ -14,10 +14,13 @@ const settings: TJS.PartialArgs = {
 	noExtraProps: true,
 	defaultProps: false
 };
-const compilerOptions: TJS.CompilerOptions = {
+const compilerOptions = {
 	strictNullChecks: true
 };
-const ExcludedSchemas = [
+const Excluded = [
+	"DefaultSchema",
+	"Schema",
+	"EntitySchema",
 	"ServerResponse",
 	"Http2ServerResponse",
 	"global.Express.Response",
@@ -32,13 +35,13 @@ function main() {
 	const generator = TJS.buildGenerator(program, settings);
 	if (!generator || !program) return;
 
-	const schemas = generator.getUserSymbols().filter((x) => x.endsWith("Response") && !ExcludedSchemas.includes(x));
+	const schemas = generator.getUserSymbols().filter((x) => (x.endsWith("Schema") || x.endsWith("Response")) && !Excluded.includes(x));
 	console.log(schemas);
 
-	var definitions: any = {};
+	var definitions = {};
 
 	for (const name of schemas) {
-		const part = TJS.generateSchema(program, name, settings, [], generator as TJS.JsonSchemaGenerator);
+		const part = TJS.generateSchema(program, name, settings, [], generator);
 		if (!part) continue;
 
 		definitions = { ...definitions, [name]: { ...part } };
@@ -47,11 +50,10 @@ function main() {
 	fs.writeFileSync(schemaPath, JSON.stringify(definitions, null, 4));
 }
 
-// #/definitions/
 main();
 
-function walk(dir: string) {
-	var results = [] as string[];
+function walk(dir) {
+	var results = [];
 	var list = fs.readdirSync(dir);
 	list.forEach(function (file) {
 		file = dir + "/" + file;
diff --git a/api/scripts/generate_body_schema.ts b/api/scripts/generate_body_schema.ts
deleted file mode 100644
index 316e5a69..00000000
--- a/api/scripts/generate_body_schema.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-// https://mermade.github.io/openapi-gui/#
-// https://editor.swagger.io/
-import path from "path";
-import fs from "fs";
-import * as TJS from "typescript-json-schema";
-import "missing-native-js-functions";
-const schemaPath = path.join(__dirname, "..", "assets", "schemas.json");
-
-const settings: TJS.PartialArgs = {
-	required: true,
-	ignoreErrors: true,
-	excludePrivate: true,
-	defaultNumberType: "integer",
-	noExtraProps: true,
-	defaultProps: false
-};
-const compilerOptions: TJS.CompilerOptions = {
-	strictNullChecks: true
-};
-const ExcludedSchemas = ["DefaultSchema", "Schema", "EntitySchema"];
-
-function main() {
-	const program = TJS.getProgramFromFiles(walk(path.join(__dirname, "..", "src", "routes")), compilerOptions);
-	const generator = TJS.buildGenerator(program, settings);
-	if (!generator || !program) return;
-
-	const schemas = generator.getUserSymbols().filter((x) => x.endsWith("Schema") && !ExcludedSchemas.includes(x));
-	console.log(schemas);
-
-	var definitions: any = {};
-
-	for (const name of schemas) {
-		const part = TJS.generateSchema(program, name, settings, [], generator as TJS.JsonSchemaGenerator);
-		if (!part) continue;
-
-		definitions = { ...definitions, [name]: { ...part } };
-	}
-
-	fs.writeFileSync(schemaPath, JSON.stringify(definitions, null, 4));
-}
-
-// #/definitions/
-main();
-
-function walk(dir: string) {
-	var results = [] as string[];
-	var list = fs.readdirSync(dir);
-	list.forEach(function (file) {
-		file = dir + "/" + file;
-		var stat = fs.statSync(file);
-		if (stat && stat.isDirectory()) {
-			/* Recurse into a subdirectory */
-			results = results.concat(walk(file));
-		} else {
-			if (!file.endsWith(".ts")) return;
-			results.push(file);
-		}
-	});
-	return results;
-}
diff --git a/api/scripts/generate_openapi_schema.js b/api/scripts/generate_openapi_schema.js
new file mode 100644
index 00000000..eb979f14
--- /dev/null
+++ b/api/scripts/generate_openapi_schema.js
@@ -0,0 +1,127 @@
+// https://mermade.github.io/openapi-gui/#
+// https://editor.swagger.io/
+const getRouteDescriptions = require("../jest/getRouteDescriptions");
+const path = require("path");
+const fs = require("fs");
+require("missing-native-js-functions");
+
+const openapiPath = path.join(__dirname, "..", "assets", "openapi.json");
+const SchemaPath = path.join(__dirname, "..", "assets", "schemas.json");
+const schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" }));
+const specification = JSON.parse(fs.readFileSync(openapiPath, { encoding: "utf8" }));
+
+function combineSchemas(schemas) {
+	var definitions = {};
+
+	for (const name in schemas) {
+		definitions = {
+			...definitions,
+			...schemas[name].definitions,
+			[name]: { ...schemas[name], definitions: undefined, $schema: undefined }
+		};
+	}
+
+	for (const key in definitions) {
+		specification.components.schemas[key] = definitions[key];
+		delete definitions[key].additionalProperties;
+		delete definitions[key].$schema;
+		const definition = definitions[key];
+
+		if (typeof definition.properties === "object") {
+			for (const property of Object.values(definition.properties)) {
+				if (Array.isArray(property.type)) {
+					if (property.type.includes("null")) {
+						property.type = property.type.find((x) => x !== "null");
+						property.nullable = true;
+					}
+				}
+			}
+		}
+	}
+
+	return definitions;
+}
+
+function getTag(key) {
+	return key.match(/\/([\w-]+)/)[1];
+}
+
+function apiRoutes() {
+	const routes = getRouteDescriptions();
+
+	const tags = Array.from(routes.keys()).map((x) => getTag(x));
+	specification.tags = [...specification.tags.map((x) => x.name), ...tags].unique().map((x) => ({ name: x }));
+
+	routes.forEach((route, pathAndMethod) => {
+		const [p, method] = pathAndMethod.split("|");
+		const path = p.replace(/:(\w+)/g, "{$1}");
+
+		let obj = specification.paths[path]?.[method] || {};
+		if (!obj.description) {
+			const permission = route.permission ? `##### Requires the \`\`${route.permission}\`\` permission\n` : "";
+			const event = route.test?.event ? `##### Fires a \`\`${route.test?.event}\`\` event\n` : "";
+			obj.description = permission + event;
+		}
+		if (route.body) {
+			obj.requestBody = {
+				required: true,
+				content: {
+					"application/json": {
+						schema: { $ref: `#/components/schemas/${route.body}` }
+					}
+				}
+			}.merge(obj.requestBody);
+		}
+		if (!obj.responses) {
+			obj.responses = {
+				default: {
+					description: "not documented"
+				}
+			};
+		}
+		if (route.test?.response) {
+			const status = route.test.response.status || 200;
+			obj.responses = {
+				[status]: {
+					...(route.test.response.body
+						? {
+								description: obj.responses[status].description || "",
+								content: {
+									"application/json": {
+										schema: {
+											$ref: `#/components/schemas/${route.test.response.body}`
+										}
+									}
+								}
+						  }
+						: {})
+				}
+			}.merge(obj.responses);
+			delete obj.responses.default;
+		}
+		if (p.includes(":")) {
+			obj.parameters = p.match(/:\w+/g)?.map((x) => ({
+				name: x.replace(":", ""),
+				in: "path",
+				required: true,
+				schema: { type: "string" },
+				description: x.replace(":", "")
+			}));
+		}
+		obj.tags = [...(obj.tags || []), getTag(p)].unique();
+
+		specification.paths[path] = { ...specification.paths[path], [method]: obj };
+	});
+}
+
+function main() {
+	combineSchemas(schemas);
+	apiRoutes();
+
+	fs.writeFileSync(
+		openapiPath,
+		JSON.stringify(specification, null, 4).replaceAll("#/definitions", "#/components/schemas").replaceAll("bigint", "number")
+	);
+}
+
+main();
diff --git a/api/scripts/generate_openapi_schema.ts b/api/scripts/generate_openapi_schema.ts
deleted file mode 100644
index c0995b6c..00000000
--- a/api/scripts/generate_openapi_schema.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-// https://mermade.github.io/openapi-gui/#
-// https://editor.swagger.io/
-import path from "path";
-import fs from "fs";
-import * as TJS from "typescript-json-schema";
-import "missing-native-js-functions";
-
-const settings: TJS.PartialArgs = {
-	required: true,
-	ignoreErrors: true,
-	excludePrivate: true,
-	defaultNumberType: "integer",
-	noExtraProps: true,
-	defaultProps: false
-};
-const compilerOptions: TJS.CompilerOptions = {
-	strictNullChecks: false
-};
-const openapiPath = path.join(__dirname, "..", "assets", "openapi.json");
-var specification = JSON.parse(fs.readFileSync(openapiPath, { encoding: "utf8" }));
-
-async function utilSchemas() {
-	const program = TJS.getProgramFromFiles([path.join(__dirname, "..", "..", "util", "src", "index.ts")], compilerOptions);
-	const generator = TJS.buildGenerator(program, settings);
-
-	const schemas = ["UserPublic", "UserPrivate", "PublicConnectedAccount"];
-
-	// @ts-ignore
-	combineSchemas({ schemas, generator, program });
-}
-
-function combineSchemas(opts: { program: TJS.Program; generator: TJS.JsonSchemaGenerator; schemas: string[] }) {
-	var definitions: any = {};
-
-	for (const name of opts.schemas) {
-		const part = TJS.generateSchema(opts.program, name, settings, [], opts.generator as TJS.JsonSchemaGenerator);
-		if (!part) continue;
-
-		definitions = { ...definitions, [name]: { ...part, definitions: undefined, $schema: undefined } };
-	}
-
-	for (const key in definitions) {
-		specification.components.schemas[key] = definitions[key];
-		delete definitions[key].additionalProperties;
-		delete definitions[key].$schema;
-	}
-
-	return definitions;
-}
-
-const ExcludedSchemas = [
-	"DefaultSchema",
-	"Schema",
-	"EntitySchema",
-	"ServerResponse",
-	"Http2ServerResponse",
-	"global.Express.Response",
-	"Response",
-	"e.Response",
-	"request.Response",
-	"supertest.Response"
-];
-
-function apiSchemas() {
-	const program = TJS.getProgramFromFiles([path.join(__dirname, "..", "src", "schema", "index.ts")], compilerOptions);
-	const generator = TJS.buildGenerator(program, settings);
-
-	const schemas = generator
-		.getUserSymbols()
-		.filter((x) => x.endsWith("Response") && !ExcludedSchemas.includes(x))
-		.concat(generator.getUserSymbols().filter((x) => x.endsWith("Schema") && !ExcludedSchemas.includes(x)));
-
-	// @ts-ignore
-	combineSchemas({ schemas, generator, program });
-}
-
-function addDefaultResponses() {
-	Object.values(specification.paths).forEach((path: any) => Object.values(path).forEach((request: any) => {}));
-}
-
-function main() {
-	addDefaultResponses();
-	utilSchemas();
-	apiSchemas();
-
-	fs.writeFileSync(
-		openapiPath,
-		JSON.stringify(specification, null, 4).replaceAll("#/definitions", "#/components/schemas").replaceAll("bigint", "number")
-	);
-}
-
-main();
diff --git a/api/src/routes/auth/login.ts b/api/src/routes/auth/login.ts
index f672658a..ff04f8aa 100644
--- a/api/src/routes/auth/login.ts
+++ b/api/src/routes/auth/login.ts
@@ -1,9 +1,7 @@
 import { Request, Response, Router } from "express";
 import { FieldErrors, route } from "@fosscord/api";
 import bcrypt from "bcrypt";
-import jwt from "jsonwebtoken";
-import { Config, User } from "@fosscord/util";
-import { adjustEmail } from "./register";
+import { Config, User, generateToken, adjustEmail } from "@fosscord/util";
 
 const router: Router = Router();
 export default router;
@@ -68,25 +66,6 @@ router.post("/", route({ body: "LoginSchema" }), async (req: Request, res: Respo
 	res.json({ token, settings: user.settings });
 });
 
-export async function generateToken(id: string) {
-	const iat = Math.floor(Date.now() / 1000);
-	const algorithm = "HS256";
-
-	return new Promise((res, rej) => {
-		jwt.sign(
-			{ id: id, iat },
-			Config.get().security.jwtSecret,
-			{
-				algorithm
-			},
-			(err, token) => {
-				if (err) return rej(err);
-				return res(token);
-			}
-		);
-	});
-}
-
 /**
  * POST /auth/login
  * @argument { login: "email@gmail.com", password: "cleartextpassword", undelete: false, captcha_key: null, login_source: null, gift_code_sku_id: null, }
diff --git a/api/src/routes/auth/register.ts b/api/src/routes/auth/register.ts
index 4d3f2860..9c058399 100644
--- a/api/src/routes/auth/register.ts
+++ b/api/src/routes/auth/register.ts
@@ -1,10 +1,8 @@
 import { Request, Response, Router } from "express";
-import { trimSpecial, User, Snowflake, Config, defaultSettings, Member, Invite } from "@fosscord/util";
+import { trimSpecial, User, Snowflake, Config, defaultSettings, generateToken, Invite, adjustEmail } from "@fosscord/util";
 import bcrypt from "bcrypt";
-import { EMAIL_REGEX, FieldErrors, route } from "@fosscord/api";
+import { FieldErrors, route, getIpAdress, IPAnalysis, isProxy } from "@fosscord/api";
 import "missing-native-js-functions";
-import { generateToken } from "./login";
-import { getIpAdress, IPAnalysis, isProxy } from "@fosscord/api";
 import { HTTPError } from "lambert-server";
 
 const router: Router = Router();
@@ -228,24 +226,6 @@ router.post("/", route({ body: "RegisterSchema" }), async (req: Request, res: Re
 	return res.json({ token: await generateToken(user.id) });
 });
 
-export function adjustEmail(email: string): string | undefined {
-	if (!email) return email;
-	// body parser already checked if it is a valid email
-	const parts = <RegExpMatchArray>email.match(EMAIL_REGEX);
-	// @ts-ignore
-	if (!parts || parts.length < 5) return undefined;
-	const domain = parts[5];
-	const user = parts[1];
-
-	// TODO: check accounts with uncommon email domains
-	if (domain === "gmail.com" || domain === "googlemail.com") {
-		// replace .dots and +alternatives -> Gmail Dot Trick https://support.google.com/mail/answer/7436150 and https://generator.email/blog/gmail-generator
-		return user.replace(/[.]|(\+.*)/g, "") + "@gmail.com";
-	}
-
-	return email;
-}
-
 export default router;
 
 /**
diff --git a/api/src/routes/channels/#channel_id/recipients.ts b/api/src/routes/channels/#channel_id/recipients.ts
index c7beeee8..83b62049 100644
--- a/api/src/routes/channels/#channel_id/recipients.ts
+++ b/api/src/routes/channels/#channel_id/recipients.ts
@@ -1,9 +1,10 @@
 import { Request, Response, Router } from "express";
 import { Channel, ChannelRecipientAddEvent, ChannelType, DiscordApiErrors, DmChannelDTO, emitEvent, PublicUserProjection, Recipient, User } from "@fosscord/util";
+import { route } from "@fosscord/api"
 
 const router: Router = Router();
 
-router.put("/:user_id", async (req: Request, res: Response) => {
+router.put("/:user_id", route({}), async (req: Request, res: Response) => {
 	const { channel_id, user_id } = req.params;
 	const channel = await Channel.findOneOrFail({ where: { id: channel_id }, relations: ["recipients"] });
 
@@ -39,7 +40,7 @@ router.put("/:user_id", async (req: Request, res: Response) => {
 	}
 });
 
-router.delete("/:user_id", async (req: Request, res: Response) => {
+router.delete("/:user_id", route({}), async (req: Request, res: Response) => {
 	const { channel_id, user_id } = req.params;
 	const channel = await Channel.findOneOrFail({ where: { id: channel_id }, relations: ["recipients"] });
 	if (!(channel.type === ChannelType.GROUP_DM && (channel.owner_id === req.user_id || user_id === req.user_id)))
diff --git a/api/src/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts b/api/src/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts
index ae10be82..8f5ca7ba 100644
--- a/api/src/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts
+++ b/api/src/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts
@@ -4,14 +4,14 @@ import { Request, Response, Router } from "express";
 
 const router = Router();
 
-router.delete("/:member_id/roles/:role_id", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => {
+router.delete("/", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => {
 	const { guild_id, role_id, member_id } = req.params;
 
 	await Member.removeRole(member_id, guild_id, role_id);
 	res.sendStatus(204);
 });
 
-router.put("/:member_id/roles/:role_id", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => {
+router.put("/", route({ permission: "MANAGE_ROLES" }), async (req: Request, res: Response) => {
 	const { guild_id, role_id, member_id } = req.params;
 
 	await Member.addRole(member_id, guild_id, role_id);
diff --git a/api/src/routes/sticker-packs/#id/index.ts b/api/src/routes/sticker-packs/#id/index.ts
index 2344a48f..7f723e97 100644
--- a/api/src/routes/sticker-packs/#id/index.ts
+++ b/api/src/routes/sticker-packs/#id/index.ts
@@ -1,8 +1,9 @@
 import { Request, Response, Router } from "express";
+import { route } from "@fosscord/api";
 
 const router: Router = Router();
 
-router.get("/", async (req: Request, res: Response) => {
+router.get("/", route({}), async (req: Request, res: Response) => {
 	//TODO
 	res.json({
 		id: "",
@@ -15,4 +16,4 @@ router.get("/", async (req: Request, res: Response) => {
 	}).status(200);
 });
 
-export default router;
\ No newline at end of file
+export default router;
diff --git a/api/src/routes/sticker-packs/index.ts b/api/src/routes/sticker-packs/index.ts
index 6c4e46d8..d671c161 100644
--- a/api/src/routes/sticker-packs/index.ts
+++ b/api/src/routes/sticker-packs/index.ts
@@ -1,10 +1,11 @@
 import { Request, Response, Router } from "express";
+import { route } from "@fosscord/api";
 
 const router: Router = Router();
 
-router.get("/", async (req: Request, res: Response) => {
+router.get("/", route({}), async (req: Request, res: Response) => {
 	//TODO
 	res.json({ sticker_packs: [] }).status(200);
 });
 
-export default router;
\ No newline at end of file
+export default router;
diff --git a/api/src/util/String.ts b/api/src/util/String.ts
index 2fe32d2c..67d87e37 100644
--- a/api/src/util/String.ts
+++ b/api/src/util/String.ts
@@ -1,8 +1,6 @@
 import { Request } from "express";
 import { ntob } from "./Base64";
 import { FieldErrors } from "./FieldError";
-export const EMAIL_REGEX =
-	/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
 
 export function checkLength(str: string, min: number, max: number, key: string, req: Request) {
 	if (str.length < min || str.length > max) {
diff --git a/api/tests/routes.test.ts b/api/tests/routes.test.ts
index 0473c579..a9c75df1 100644
--- a/api/tests/routes.test.ts
+++ b/api/tests/routes.test.ts
@@ -9,7 +9,7 @@ import addFormats from "ajv-formats";
 import fetch from "node-fetch";
 import { User } from "@fosscord/util";
 
-const SchemaPath = join(__dirname, "..", "assets", "responses.json");
+const SchemaPath = join(__dirname, "..", "assets", "schemas.json");
 const schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" }));
 export const ajv = new Ajv({
 	allErrors: true,
@@ -64,7 +64,7 @@ describe("Automatic unit tests with route description middleware", () => {
 	routes.forEach((route, pathAndMethod) => {
 		const [path, method] = pathAndMethod.split("|");
 
-		test(path, async (done) => {
+		test(`${method.toUpperCase()} ${path}`, async (done) => {
 			if (!route.test) {
 				console.log(`${(route as any).file}\nrouter.${method} is missing the test property`);
 				return done();
diff --git a/util/src/util/Email.ts b/util/src/util/Email.ts
new file mode 100644
index 00000000..c304f584
--- /dev/null
+++ b/util/src/util/Email.ts
@@ -0,0 +1,20 @@
+export const EMAIL_REGEX =
+	/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
+
+export function adjustEmail(email: string): string | undefined {
+	if (!email) return email;
+	// body parser already checked if it is a valid email
+	const parts = <RegExpMatchArray>email.match(EMAIL_REGEX);
+	// @ts-ignore
+	if (!parts || parts.length < 5) return undefined;
+	const domain = parts[5];
+	const user = parts[1];
+
+	// TODO: check accounts with uncommon email domains
+	if (domain === "gmail.com" || domain === "googlemail.com") {
+		// replace .dots and +alternatives -> Gmail Dot Trick https://support.google.com/mail/answer/7436150 and https://generator.email/blog/gmail-generator
+		return user.replace(/[.]|(\+.*)/g, "") + "@gmail.com";
+	}
+
+	return email;
+}
diff --git a/util/src/util/checkToken.ts b/util/src/util/Token.ts
index 8415e8c0..111d59a2 100644
--- a/util/src/util/checkToken.ts
+++ b/util/src/util/Token.ts
@@ -1,4 +1,5 @@
 import jwt, { VerifyOptions } from "jsonwebtoken";
+import { Config } from "./Config";
 import { User } from "../entities";
 
 export const JWTOptions: VerifyOptions = { algorithms: ["HS256"] };
@@ -21,3 +22,22 @@ export function checkToken(token: string, jwtSecret: string): Promise<any> {
 		});
 	});
 }
+
+export async function generateToken(id: string) {
+	const iat = Math.floor(Date.now() / 1000);
+	const algorithm = "HS256";
+
+	return new Promise((res, rej) => {
+		jwt.sign(
+			{ id: id, iat },
+			Config.get().security.jwtSecret,
+			{
+				algorithm,
+			},
+			(err, token) => {
+				if (err) return rej(err);
+				return res(token);
+			}
+		);
+	});
+}
diff --git a/util/src/util/index.ts b/util/src/util/index.ts
index 3160380f..d73bf4ca 100644
--- a/util/src/util/index.ts
+++ b/util/src/util/index.ts
@@ -1,11 +1,12 @@
 export * from "./ApiError";
 export * from "./BitField";
-export * from "./checkToken";
+export * from "./Token";
 export * from "./cdn";
 export * from "./Config";
 export * from "./Constants";
 export * from "./Database";
 export * from "./Event";
+export * from "./Email";
 export * from "./Intents";
 export * from "./MessageFlags";
 export * from "./Permissions";