diff options
author | Puyodead1 <puyodead@protonmail.com> | 2023-09-08 21:33:04 -0400 |
---|---|---|
committer | Puyodead1 <puyodead@protonmail.com> | 2023-12-23 16:38:15 -0500 |
commit | 4d027a424e442f10371d205e68aa3bf63d0eba0e (patch) | |
tree | cfce10a0f47f497ce89f4f18ec31cc685cb2941a | |
parent | update user modify for unique usernames (diff) | |
download | server-4d027a424e442f10371d205e68aa3bf63d0eba0e.tar.xz |
Implement Pomelo Registration
-rw-r--r-- | assets/locales/en/auth.json | 3 | ||||
-rw-r--r-- | assets/openapi.json | 213 | ||||
-rw-r--r-- | assets/schemas.json | 3734 | ||||
-rw-r--r-- | src/api/routes/auth/register.ts | 11 | ||||
-rw-r--r-- | src/api/routes/unique-username/username-attempt-unauthed.ts | 33 | ||||
-rw-r--r-- | src/api/routes/unique-username/username-suggestions-unauthed.ts | 37 | ||||
-rw-r--r-- | src/api/routes/users/@me/index.ts | 6 | ||||
-rw-r--r-- | src/util/entities/User.ts | 40 | ||||
-rw-r--r-- | src/util/schemas/UsernameAttemptUnauthedSchema.ts | 3 | ||||
-rw-r--r-- | src/util/schemas/index.ts | 1 | ||||
-rw-r--r-- | src/util/schemas/responses/UsernameAttemptResponse.ts | 3 |
11 files changed, 1835 insertions, 2249 deletions
diff --git a/assets/locales/en/auth.json b/assets/locales/en/auth.json index 2415c657..a4595662 100644 --- a/assets/locales/en/auth.json +++ b/assets/locales/en/auth.json @@ -15,7 +15,8 @@ "CONSENT_REQUIRED": "You must agree to the Terms of Service and Privacy Policy.", "USERNAME_TOO_MANY_USERS": "Too many users have this username, please try another", "GUESTS_DISABLED": "Guest users are disabled", - "TOO_MANY_REGISTRATIONS": "Too many registrations, please try again later" + "TOO_MANY_REGISTRATIONS": "Too many registrations, please try again later", + "UNIQUE_USERNAMES_DISABLED": "The Unique Usernames feature is disabled on this instance" }, "password_reset": { "EMAIL_DOES_NOT_EXIST": "Email does not exist.", diff --git a/assets/openapi.json b/assets/openapi.json index 7b2243e9..c3e1419d 100644 --- a/assets/openapi.json +++ b/assets/openapi.json @@ -3499,9 +3499,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -6014,6 +6011,17 @@ } } }, + "UsernameAttemptUnauthedSchema": { + "type": "object", + "properties": { + "username": { + "type": "string" + } + }, + "required": [ + "username" + ] + }, "VanityUrlSchema": { "type": "object", "properties": { @@ -7040,9 +7048,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -7163,9 +7168,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -8025,6 +8027,17 @@ "days" ] }, + "UsernameAttemptResponse": { + "type": "object", + "properties": { + "taken": { + "type": "boolean" + } + }, + "required": [ + "taken" + ] + }, "VerifyEmailSchema": { "type": "object", "properties": { @@ -8131,6 +8144,9 @@ "name": "track" }, { + "name": "unique-username" + }, + { "name": "updates" }, { @@ -9775,6 +9791,85 @@ ] } }, + "/unique-username/username-suggestions-unauthed/": { + "get": { + "security": [ + { + "bearer": [] + } + ], + "responses": { + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "parameters": [ + { + "name": "global_name", + "in": "query", + "required": false, + "schema": { + "type": "string" + } + } + ], + "tags": [ + "unique-username" + ] + } + }, + "/unique-username/username-attempt-unauthed/": { + "post": { + "security": [ + { + "bearer": [] + } + ], + "description": "Check if a username is available", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UsernameAttemptUnauthedSchema" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UsernameAttemptResponse" + } + } + } + }, + "400": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/APIErrorResponse" + } + } + } + } + }, + "tags": [ + "unique-username" + ] + } + }, "/track/": { "post": { "responses": { @@ -10290,6 +10385,15 @@ } } }, + "parameters": [ + { + "name": "client_id", + "in": "query", + "schema": { + "type": "string" + } + } + ], "tags": [ "oauth2" ] @@ -10366,6 +10470,30 @@ ] } }, + "/oauth2/applications/@me/": { + "get": { + "security": [ + { + "bearer": [] + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Application" + } + } + } + } + }, + "tags": [ + "oauth2" + ] + } + }, "/invites/{code}": { "get": { "security": [ @@ -13995,71 +14123,6 @@ ] } }, - "/guilds/{guild_id}/bans/@me": { - "put": { - "security": [ - { - "bearer": [] - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BanCreateSchema" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Ban" - } - } - } - }, - "400": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/APIErrorResponse" - } - } - } - }, - "403": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/APIErrorResponse" - } - } - } - } - }, - "parameters": [ - { - "name": "guild_id", - "in": "path", - "required": true, - "schema": { - "type": "string" - }, - "description": "guild_id" - } - ], - "tags": [ - "guilds" - ] - } - }, "/guilds/{guild_id}/audit-logs/": { "get": { "security": [ @@ -16408,7 +16471,7 @@ }, "/auth/generate-registration-tokens/": { "get": { - "x-right-required": "OPERATOR", + "x-right-required": "CREATE_REGISTRATION_TOKENS", "security": [ { "bearer": [] diff --git a/assets/schemas.json b/assets/schemas.json index 0f2602f7..b12357ca 100644 --- a/assets/schemas.json +++ b/assets/schemas.json @@ -3663,9 +3663,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -7911,9 +7908,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -12159,9 +12153,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -16402,9 +16393,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -20681,9 +20669,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -24929,9 +24914,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -29168,9 +29150,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -33410,9 +33389,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -37661,9 +37637,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -41900,9 +41873,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -46139,9 +46109,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -50397,9 +50364,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -54639,9 +54603,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -58941,9 +58902,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -63202,9 +63160,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -67604,9 +67559,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -71864,9 +71816,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -76134,9 +76083,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -80386,9 +80332,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -84644,9 +84587,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -88892,9 +88832,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -93128,9 +93065,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -97482,9 +97416,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -101833,9 +101764,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -106072,9 +106000,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -110319,9 +110244,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -114559,9 +114481,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -118799,9 +118718,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -123074,9 +122990,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -127314,9 +127227,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -131553,9 +131463,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -135807,9 +135714,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -140050,9 +139954,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -144367,9 +144268,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -148606,9 +148504,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -152845,9 +152740,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -157081,9 +156973,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -161323,9 +161212,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -165575,9 +165461,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -169811,9 +169694,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -174096,9 +173976,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -178370,9 +178247,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -182606,9 +182480,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -186867,9 +186738,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -191217,9 +191085,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -192147,16 +192012,17 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "VanityUrlSchema": { + "UsernameAttemptUnauthedSchema": { "type": "object", "properties": { - "code": { - "minLength": 1, - "maxLength": 20, + "username": { "type": "string" } }, "additionalProperties": false, + "required": [ + "username" + ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -195452,9 +195318,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -196382,55 +196245,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "VoiceIdentifySchema": { + "VanityUrlSchema": { "type": "object", "properties": { - "server_id": { - "type": "string" - }, - "user_id": { - "type": "string" - }, - "session_id": { - "type": "string" - }, - "token": { + "code": { + "minLength": 1, + "maxLength": 20, "type": "string" - }, - "video": { - "type": "boolean" - }, - "streams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "rid": { - "type": "string" - }, - "quality": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "quality", - "rid", - "type" - ] - } } }, "additionalProperties": false, - "required": [ - "server_id", - "session_id", - "token", - "user_id" - ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -199726,9 +199550,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -200656,42 +200477,54 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "VoiceStateUpdateSchema": { + "VoiceIdentifySchema": { "type": "object", "properties": { - "guild_id": { + "server_id": { "type": "string" }, - "channel_id": { + "user_id": { "type": "string" }, - "self_mute": { - "type": "boolean" - }, - "self_deaf": { - "type": "boolean" - }, - "self_video": { - "type": "boolean" - }, - "preferred_region": { + "session_id": { "type": "string" }, - "request_to_speak_timestamp": { - "type": "string", - "format": "date-time" + "token": { + "type": "string" }, - "suppress": { + "video": { "type": "boolean" }, - "flags": { - "type": "integer" + "streams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "rid": { + "type": "string" + }, + "quality": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "quality", + "rid", + "type" + ] + } } }, "additionalProperties": false, "required": [ - "self_deaf", - "self_mute" + "server_id", + "session_id", + "token", + "user_id" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -203988,9 +203821,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -204918,94 +204748,42 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "VoiceVideoSchema": { + "VoiceStateUpdateSchema": { "type": "object", "properties": { - "audio_ssrc": { - "type": "integer" + "guild_id": { + "type": "string" }, - "video_ssrc": { - "type": "integer" + "channel_id": { + "type": "string" }, - "rtx_ssrc": { - "type": "integer" + "self_mute": { + "type": "boolean" }, - "user_id": { + "self_deaf": { + "type": "boolean" + }, + "self_video": { + "type": "boolean" + }, + "preferred_region": { "type": "string" }, - "streams": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "enum": [ - "audio", - "video" - ], - "type": "string" - }, - "rid": { - "type": "string" - }, - "ssrc": { - "type": "integer" - }, - "active": { - "type": "boolean" - }, - "quality": { - "type": "integer" - }, - "rtx_ssrc": { - "type": "integer" - }, - "max_bitrate": { - "type": "integer" - }, - "max_framerate": { - "type": "integer" - }, - "max_resolution": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "width": { - "type": "integer" - }, - "height": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "height", - "type", - "width" - ] - } - }, - "additionalProperties": false, - "required": [ - "active", - "max_bitrate", - "max_framerate", - "max_resolution", - "quality", - "rid", - "rtx_ssrc", - "ssrc", - "type" - ] - } + "request_to_speak_timestamp": { + "type": "string", + "format": "date-time" + }, + "suppress": { + "type": "boolean" + }, + "flags": { + "type": "integer" } }, "additionalProperties": false, "required": [ - "audio_ssrc", - "video_ssrc" + "self_deaf", + "self_mute" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -208302,9 +208080,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -209232,16 +209007,94 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GenerateWebAuthnCredentialsSchema": { + "VoiceVideoSchema": { "type": "object", "properties": { - "password": { + "audio_ssrc": { + "type": "integer" + }, + "video_ssrc": { + "type": "integer" + }, + "rtx_ssrc": { + "type": "integer" + }, + "user_id": { "type": "string" + }, + "streams": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "enum": [ + "audio", + "video" + ], + "type": "string" + }, + "rid": { + "type": "string" + }, + "ssrc": { + "type": "integer" + }, + "active": { + "type": "boolean" + }, + "quality": { + "type": "integer" + }, + "rtx_ssrc": { + "type": "integer" + }, + "max_bitrate": { + "type": "integer" + }, + "max_framerate": { + "type": "integer" + }, + "max_resolution": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "height", + "type", + "width" + ] + } + }, + "additionalProperties": false, + "required": [ + "active", + "max_bitrate", + "max_framerate", + "max_resolution", + "quality", + "rid", + "rtx_ssrc", + "ssrc", + "type" + ] + } } }, "additionalProperties": false, "required": [ - "password" + "audio_ssrc", + "video_ssrc" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -212538,9 +212391,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -213468,24 +213318,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "CreateWebAuthnCredentialSchema": { + "GenerateWebAuthnCredentialsSchema": { "type": "object", "properties": { - "credential": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ticket": { + "password": { "type": "string" } }, "additionalProperties": false, "required": [ - "credential", - "name", - "ticket" + "password" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -216782,9 +216624,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -217712,14 +217551,24 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "WebAuthnPostSchema": { - "anyOf": [ - { - "$ref": "#/definitions/GenerateWebAuthnCredentialsSchema" + "CreateWebAuthnCredentialSchema": { + "type": "object", + "properties": { + "credential": { + "type": "string" }, - { - "$ref": "#/definitions/CreateWebAuthnCredentialSchema" + "name": { + "type": "string" + }, + "ticket": { + "type": "string" } + }, + "additionalProperties": false, + "required": [ + "credential", + "name", + "ticket" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -221016,9 +220865,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -221946,20 +221792,14 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "WebAuthnTotpSchema": { - "type": "object", - "properties": { - "code": { - "type": "string" + "WebAuthnPostSchema": { + "anyOf": [ + { + "$ref": "#/definitions/GenerateWebAuthnCredentialsSchema" }, - "ticket": { - "type": "string" + { + "$ref": "#/definitions/CreateWebAuthnCredentialSchema" } - }, - "additionalProperties": false, - "required": [ - "code", - "ticket" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -225256,9 +225096,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -226186,20 +226023,20 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "WebhookCreateSchema": { + "WebAuthnTotpSchema": { "type": "object", "properties": { - "name": { - "maxLength": 80, + "code": { "type": "string" }, - "avatar": { + "ticket": { "type": "string" } }, "additionalProperties": false, "required": [ - "name" + "code", + "ticket" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -229496,9 +229333,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -230426,20 +230260,20 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "WidgetModifySchema": { + "WebhookCreateSchema": { "type": "object", "properties": { - "enabled": { - "type": "boolean" + "name": { + "maxLength": 80, + "type": "string" }, - "channel_id": { + "avatar": { "type": "string" } }, "additionalProperties": false, "required": [ - "channel_id", - "enabled" + "name" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -233736,9 +233570,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -234666,52 +234497,20 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIErrorResponse": { + "WidgetModifySchema": { "type": "object", "properties": { - "code": { - "type": "integer" + "enabled": { + "type": "boolean" }, - "message": { + "channel_id": { "type": "string" - }, - "errors": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "_errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "code", - "message" - ] - } - } - }, - "additionalProperties": false, - "required": [ - "_errors" - ] - } } }, "additionalProperties": false, "required": [ - "code", - "errors", - "message" + "channel_id", + "enabled" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -238008,9 +237807,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -238938,24 +238734,52 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "CaptchaRequiredResponse": { + "APIErrorResponse": { "type": "object", "properties": { - "captcha_key": { - "type": "string" + "code": { + "type": "integer" }, - "captcha_sitekey": { + "message": { "type": "string" }, - "captcha_service": { - "type": "string" + "errors": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "_errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "code": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "code", + "message" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "_errors" + ] + } } }, "additionalProperties": false, "required": [ - "captcha_key", - "captcha_service", - "captcha_sitekey" + "code", + "errors", + "message" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -242252,9 +242076,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -243182,14 +243003,24 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIErrorOrCaptchaResponse": { - "anyOf": [ - { - "$ref": "#/definitions/APIErrorResponse" + "CaptchaRequiredResponse": { + "type": "object", + "properties": { + "captcha_key": { + "type": "string" }, - { - "$ref": "#/definitions/CaptchaRequiredResponse" + "captcha_sitekey": { + "type": "string" + }, + "captcha_service": { + "type": "string" } + }, + "additionalProperties": false, + "required": [ + "captcha_key", + "captcha_service", + "captcha_sitekey" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -246486,9 +246317,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -247416,20 +247244,14 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "BackupCodesChallengeResponse": { - "type": "object", - "properties": { - "nonce": { - "type": "string" + "APIErrorOrCaptchaResponse": { + "anyOf": [ + { + "$ref": "#/definitions/APIErrorResponse" }, - "regenerate_nonce": { - "type": "string" + { + "$ref": "#/definitions/CaptchaRequiredResponse" } - }, - "additionalProperties": false, - "required": [ - "nonce", - "regenerate_nonce" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -250726,9 +250548,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -251656,31 +251475,20 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "DiscoverableGuildsResponse": { + "BackupCodesChallengeResponse": { "type": "object", "properties": { - "total": { - "type": "integer" - }, - "guilds": { - "type": "array", - "items": { - "$ref": "#/definitions/Guild" - } - }, - "offset": { - "type": "integer" + "nonce": { + "type": "string" }, - "limit": { - "type": "integer" + "regenerate_nonce": { + "type": "string" } }, "additionalProperties": false, "required": [ - "guilds", - "limit", - "offset", - "total" + "nonce", + "regenerate_nonce" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -254977,9 +254785,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -255907,45 +255712,31 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GatewayBotResponse": { + "DiscoverableGuildsResponse": { "type": "object", "properties": { - "url": { - "type": "string" + "total": { + "type": "integer" }, - "shards": { + "guilds": { + "type": "array", + "items": { + "$ref": "#/definitions/Guild" + } + }, + "offset": { "type": "integer" }, - "session_start_limit": { - "type": "object", - "properties": { - "total": { - "type": "integer" - }, - "remaining": { - "type": "integer" - }, - "reset_after": { - "type": "integer" - }, - "max_concurrency": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "max_concurrency", - "remaining", - "reset_after", - "total" - ] + "limit": { + "type": "integer" } }, "additionalProperties": false, "required": [ - "session_start_limit", - "shards", - "url" + "guilds", + "limit", + "offset", + "total" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -259242,9 +259033,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -260172,15 +259960,44 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GatewayResponse": { + "GatewayBotResponse": { "type": "object", "properties": { "url": { "type": "string" + }, + "shards": { + "type": "integer" + }, + "session_start_limit": { + "type": "object", + "properties": { + "total": { + "type": "integer" + }, + "remaining": { + "type": "integer" + }, + "reset_after": { + "type": "integer" + }, + "max_concurrency": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "max_concurrency", + "remaining", + "reset_after", + "total" + ] } }, "additionalProperties": false, "required": [ + "session_start_limit", + "shards", "url" ], "definitions": { @@ -263478,9 +263295,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -264408,19 +264222,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GenerateRegistrationTokensResponse": { + "GatewayResponse": { "type": "object", "properties": { - "tokens": { - "type": "array", - "items": { - "type": "string" - } + "url": { + "type": "string" } }, "additionalProperties": false, "required": [ - "tokens" + "url" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -267717,9 +267528,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -268647,51 +268455,19 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildBansResponse": { + "GenerateRegistrationTokensResponse": { "type": "object", "properties": { - "reason": { - "type": "string" - }, - "user": { - "type": "object", - "properties": { - "username": { - "type": "string" - }, - "discriminator": { - "type": "string" - }, - "global_name": { - "type": "string" - }, - "id": { - "type": "string" - }, - "avatar": { - "type": [ - "null", - "string" - ] - }, - "public_flags": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "avatar", - "discriminator", - "id", - "public_flags", - "username" - ] + "tokens": { + "type": "array", + "items": { + "type": "string" + } } }, "additionalProperties": false, "required": [ - "reason", - "user" + "tokens" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -271988,9 +271764,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -272918,16 +272691,51 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildCreateResponse": { + "GuildBansResponse": { "type": "object", "properties": { - "id": { + "reason": { "type": "string" + }, + "user": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "discriminator": { + "type": "string" + }, + "global_name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "avatar": { + "type": [ + "null", + "string" + ] + }, + "public_flags": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "avatar", + "discriminator", + "id", + "public_flags", + "username" + ] } }, "additionalProperties": false, "required": [ - "id" + "reason", + "user" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -276224,9 +276032,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -277154,95 +276959,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildDiscoveryRequirementsResponse": { + "GuildCreateResponse": { "type": "object", "properties": { - "uild_id": { + "id": { "type": "string" - }, - "safe_environment": { - "type": "boolean" - }, - "healthy": { - "type": "boolean" - }, - "health_score_pending": { - "type": "boolean" - }, - "size": { - "type": "boolean" - }, - "nsfw_properties": {}, - "protected": { - "type": "boolean" - }, - "sufficient": { - "type": "boolean" - }, - "sufficient_without_grace_period": { - "type": "boolean" - }, - "valid_rules_channel": { - "type": "boolean" - }, - "retention_healthy": { - "type": "boolean" - }, - "engagement_healthy": { - "type": "boolean" - }, - "age": { - "type": "boolean" - }, - "minimum_age": { - "type": "integer" - }, - "health_score": { - "type": "object", - "properties": { - "avg_nonnew_participators": { - "type": "integer" - }, - "avg_nonnew_communicators": { - "type": "integer" - }, - "num_intentful_joiners": { - "type": "integer" - }, - "perc_ret_w1_intentful": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "avg_nonnew_communicators", - "avg_nonnew_participators", - "num_intentful_joiners", - "perc_ret_w1_intentful" - ] - }, - "minimum_size": { - "type": "integer" } }, "additionalProperties": false, "required": [ - "age", - "engagement_healthy", - "health_score", - "health_score_pending", - "healthy", - "minimum_age", - "minimum_size", - "nsfw_properties", - "protected", - "retention_healthy", - "safe_environment", - "size", - "sufficient", - "sufficient_without_grace_period", - "uild_id", - "valid_rules_channel" + "id" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -280539,9 +280265,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -281469,23 +281192,95 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildMessagesSearchResponse": { + "GuildDiscoveryRequirementsResponse": { "type": "object", "properties": { - "messages": { - "type": "array", - "items": { - "$ref": "#/definitions/GuildMessagesSearchMessage" - } + "uild_id": { + "type": "string" }, - "total_results": { + "safe_environment": { + "type": "boolean" + }, + "healthy": { + "type": "boolean" + }, + "health_score_pending": { + "type": "boolean" + }, + "size": { + "type": "boolean" + }, + "nsfw_properties": {}, + "protected": { + "type": "boolean" + }, + "sufficient": { + "type": "boolean" + }, + "sufficient_without_grace_period": { + "type": "boolean" + }, + "valid_rules_channel": { + "type": "boolean" + }, + "retention_healthy": { + "type": "boolean" + }, + "engagement_healthy": { + "type": "boolean" + }, + "age": { + "type": "boolean" + }, + "minimum_age": { + "type": "integer" + }, + "health_score": { + "type": "object", + "properties": { + "avg_nonnew_participators": { + "type": "integer" + }, + "avg_nonnew_communicators": { + "type": "integer" + }, + "num_intentful_joiners": { + "type": "integer" + }, + "perc_ret_w1_intentful": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "avg_nonnew_communicators", + "avg_nonnew_participators", + "num_intentful_joiners", + "perc_ret_w1_intentful" + ] + }, + "minimum_size": { "type": "integer" } }, "additionalProperties": false, "required": [ - "messages", - "total_results" + "age", + "engagement_healthy", + "health_score", + "health_score_pending", + "healthy", + "minimum_age", + "minimum_size", + "nsfw_properties", + "protected", + "retention_healthy", + "safe_environment", + "size", + "sufficient", + "sufficient_without_grace_period", + "uild_id", + "valid_rules_channel" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -284782,9 +284577,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -285712,16 +285504,23 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildPruneResponse": { + "GuildMessagesSearchResponse": { "type": "object", "properties": { - "pruned": { + "messages": { + "type": "array", + "items": { + "$ref": "#/definitions/GuildMessagesSearchMessage" + } + }, + "total_results": { "type": "integer" } }, "additionalProperties": false, "required": [ - "pruned" + "messages", + "total_results" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -289018,9 +288817,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -289948,16 +289744,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildPurgeResponse": { + "GuildPruneResponse": { "type": "object", "properties": { - "purged": { + "pruned": { "type": "integer" } }, "additionalProperties": false, "required": [ - "purged" + "pruned" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -293254,9 +293050,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -294184,23 +293977,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildRecommendationsResponse": { + "GuildPurgeResponse": { "type": "object", "properties": { - "recommended_guilds": { - "type": "array", - "items": { - "$ref": "#/definitions/Guild" - } - }, - "load_id": { - "type": "string" + "purged": { + "type": "integer" } }, "additionalProperties": false, "required": [ - "load_id", - "recommended_guilds" + "purged" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -297497,9 +297283,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -298427,20 +298210,23 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildVanityUrlResponse": { - "anyOf": [ - { - "$ref": "#/definitions/GuildVanityUrl" - }, - { - "$ref": "#/definitions/GuildVanityUrlNoInvite" - }, - { + "GuildRecommendationsResponse": { + "type": "object", + "properties": { + "recommended_guilds": { "type": "array", "items": { - "$ref": "#/definitions/GuildVanityUrl" + "$ref": "#/definitions/Guild" } + }, + "load_id": { + "type": "string" } + }, + "additionalProperties": false, + "required": [ + "load_id", + "recommended_guilds" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -301737,9 +301523,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -302667,16 +302450,20 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildVanityUrlCreateResponse": { - "type": "object", - "properties": { - "code": { - "type": "string" + "GuildVanityUrlResponse": { + "anyOf": [ + { + "$ref": "#/definitions/GuildVanityUrl" + }, + { + "$ref": "#/definitions/GuildVanityUrlNoInvite" + }, + { + "type": "array", + "items": { + "$ref": "#/definitions/GuildVanityUrl" + } } - }, - "additionalProperties": false, - "required": [ - "code" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -305973,9 +305760,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -306903,98 +306687,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildWidgetJsonResponse": { + "GuildVanityUrlCreateResponse": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "instant_invite": { + "code": { "type": "string" - }, - "channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "id", - "name", - "position" - ] - } - }, - "members": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "username": { - "type": "string" - }, - "global_name": { - "type": [ - "null", - "string" - ] - }, - "discriminator": { - "type": "string" - }, - "avatar": { - "type": [ - "null", - "string" - ] - }, - "status": { - "$ref": "#/definitions/ClientStatus" - }, - "avatar_url": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "avatar", - "avatar_url", - "discriminator", - "global_name", - "id", - "status", - "username" - ] - } - }, - "presence_count": { - "type": "integer" } }, "additionalProperties": false, "required": [ - "channels", - "id", - "instant_invite", - "members", - "name", - "presence_count" + "code" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -310291,9 +309993,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -311221,27 +310920,98 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "GuildWidgetSettingsResponse": { + "GuildWidgetJsonResponse": { "type": "object", "properties": { - "enabled": { - "type": "boolean" + "id": { + "type": "string" }, - "channel_id": { - "anyOf": [ - { - "$ref": "#/definitions/Snowflake" + "name": { + "type": "string" + }, + "instant_invite": { + "type": "string" + }, + "channels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "position": { + "type": "integer" + } }, - { - "type": "null" - } - ] + "additionalProperties": false, + "required": [ + "id", + "name", + "position" + ] + } + }, + "members": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "username": { + "type": "string" + }, + "global_name": { + "type": [ + "null", + "string" + ] + }, + "discriminator": { + "type": "string" + }, + "avatar": { + "type": [ + "null", + "string" + ] + }, + "status": { + "$ref": "#/definitions/ClientStatus" + }, + "avatar_url": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "avatar", + "avatar_url", + "discriminator", + "global_name", + "id", + "status", + "username" + ] + } + }, + "presence_count": { + "type": "integer" } }, "additionalProperties": false, "required": [ - "channel_id", - "enabled" + "channels", + "id", + "instant_invite", + "members", + "name", + "presence_count" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -314538,9 +314308,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -315468,28 +315235,27 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "InstanceDomainsResponse": { + "GuildWidgetSettingsResponse": { "type": "object", "properties": { - "cdn": { - "type": "string" - }, - "gateway": { - "type": "string" - }, - "defaultApiVersion": { - "type": "string" + "enabled": { + "type": "boolean" }, - "apiEndpoint": { - "type": "string" + "channel_id": { + "anyOf": [ + { + "$ref": "#/definitions/Snowflake" + }, + { + "type": "null" + } + ] } }, "additionalProperties": false, "required": [ - "apiEndpoint", - "cdn", - "defaultApiVersion", - "gateway" + "channel_id", + "enabled" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -318786,9 +318552,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -319716,78 +319479,28 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "InstancePingResponse": { + "InstanceDomainsResponse": { "type": "object", "properties": { - "ping": { - "type": "string", - "enum": [ - "pong!" - ] + "cdn": { + "type": "string" }, - "instance": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": [ - "null", - "string" - ] - }, - "image": { - "type": [ - "null", - "string" - ] - }, - "correspondenceEmail": { - "type": [ - "null", - "string" - ] - }, - "correspondenceUserID": { - "type": [ - "null", - "string" - ] - }, - "frontPage": { - "type": [ - "null", - "string" - ] - }, - "tosPage": { - "type": [ - "null", - "string" - ] - } - }, - "additionalProperties": false, - "required": [ - "correspondenceEmail", - "correspondenceUserID", - "description", - "frontPage", - "id", - "image", - "name", - "tosPage" - ] + "gateway": { + "type": "string" + }, + "defaultApiVersion": { + "type": "string" + }, + "apiEndpoint": { + "type": "string" } }, "additionalProperties": false, "required": [ - "instance", - "ping" + "apiEndpoint", + "cdn", + "defaultApiVersion", + "gateway" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -323084,9 +322797,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -324014,37 +323724,78 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "InstanceStatsResponse": { + "InstancePingResponse": { "type": "object", "properties": { - "counts": { + "ping": { + "type": "string", + "enum": [ + "pong!" + ] + }, + "instance": { "type": "object", "properties": { - "user": { - "type": "integer" + "id": { + "type": "string" }, - "guild": { - "type": "integer" + "name": { + "type": "string" }, - "message": { - "type": "integer" + "description": { + "type": [ + "null", + "string" + ] }, - "members": { - "type": "integer" + "image": { + "type": [ + "null", + "string" + ] + }, + "correspondenceEmail": { + "type": [ + "null", + "string" + ] + }, + "correspondenceUserID": { + "type": [ + "null", + "string" + ] + }, + "frontPage": { + "type": [ + "null", + "string" + ] + }, + "tosPage": { + "type": [ + "null", + "string" + ] } }, "additionalProperties": false, "required": [ - "guild", - "members", - "message", - "user" + "correspondenceEmail", + "correspondenceUserID", + "description", + "frontPage", + "id", + "image", + "name", + "tosPage" ] } }, "additionalProperties": false, "required": [ - "counts" + "instance", + "ping" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -327341,9 +327092,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -328271,43 +328019,37 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "LocationMetadataResponse": { + "InstanceStatsResponse": { "type": "object", "properties": { - "consent_required": { - "type": "boolean" - }, - "country_code": { - "type": "string" - }, - "promotional_email_opt_in": { + "counts": { "type": "object", "properties": { - "required": { - "type": "boolean", - "enum": [ - true - ] + "user": { + "type": "integer" }, - "pre_checked": { - "type": "boolean", - "enum": [ - false - ] + "guild": { + "type": "integer" + }, + "message": { + "type": "integer" + }, + "members": { + "type": "integer" } }, "additionalProperties": false, "required": [ - "pre_checked", - "required" + "guild", + "members", + "message", + "user" ] } }, "additionalProperties": false, "required": [ - "consent_required", - "country_code", - "promotional_email_opt_in" + "counts" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -331604,9 +331346,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -332534,37 +332273,43 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "MemberJoinGuildResponse": { + "LocationMetadataResponse": { "type": "object", "properties": { - "guild": { - "$ref": "#/definitions/Guild" - }, - "emojis": { - "type": "array", - "items": { - "$ref": "#/definitions/Emoji" - } + "consent_required": { + "type": "boolean" }, - "roles": { - "type": "array", - "items": { - "$ref": "#/definitions/Role" - } + "country_code": { + "type": "string" }, - "stickers": { - "type": "array", - "items": { - "$ref": "#/definitions/Sticker" - } + "promotional_email_opt_in": { + "type": "object", + "properties": { + "required": { + "type": "boolean", + "enum": [ + true + ] + }, + "pre_checked": { + "type": "boolean", + "enum": [ + false + ] + } + }, + "additionalProperties": false, + "required": [ + "pre_checked", + "required" + ] } }, "additionalProperties": false, "required": [ - "emojis", - "guild", - "roles", - "stickers" + "consent_required", + "country_code", + "promotional_email_opt_in" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -335861,9 +335606,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -336791,16 +336533,37 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "OAuthAuthorizeResponse": { + "MemberJoinGuildResponse": { "type": "object", "properties": { - "location": { - "type": "string" + "guild": { + "$ref": "#/definitions/Guild" + }, + "emojis": { + "type": "array", + "items": { + "$ref": "#/definitions/Emoji" + } + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "stickers": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } } }, "additionalProperties": false, "required": [ - "location" + "emojis", + "guild", + "roles", + "stickers" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -340097,9 +339860,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -341027,44 +340787,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "TenorGifResponse": { + "OAuthAuthorizeResponse": { "type": "object", "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { - "type": "string" - }, - "src": { - "type": "string" - }, - "gif_src": { - "type": "string" - }, - "width": { - "type": "integer" - }, - "height": { - "type": "integer" - }, - "preview": { + "location": { "type": "string" } }, "additionalProperties": false, "required": [ - "gif_src", - "height", - "id", - "preview", - "src", - "title", - "url", - "width" + "location" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -344361,9 +344093,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -345291,56 +345020,44 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "TenorTrendingResponse": { + "TenorGifResponse": { "type": "object", "properties": { - "categories": { - "type": "object", - "properties": { - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "searchterm": { - "type": "string" - }, - "path": { - "type": "string" - }, - "image": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "image", - "name", - "path", - "searchterm" - ] - } - } - }, - "additionalProperties": false, - "required": [ - "tags" - ] + "id": { + "type": "string" }, - "gifs": { - "type": "array", - "items": { - "$ref": "#/definitions/TenorGifResponse" - } + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "src": { + "type": "string" + }, + "gif_src": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + }, + "preview": { + "type": "string" } }, "additionalProperties": false, "required": [ - "categories", - "gifs" + "gif_src", + "height", + "id", + "preview", + "src", + "title", + "url", + "width" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -348637,9 +348354,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -349567,11 +349281,57 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "TenorGifsResponse": { - "type": "array", - "items": { - "$ref": "#/definitions/TenorGifResponse" + "TenorTrendingResponse": { + "type": "object", + "properties": { + "categories": { + "type": "object", + "properties": { + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "searchterm": { + "type": "string" + }, + "path": { + "type": "string" + }, + "image": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "image", + "name", + "path", + "searchterm" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "tags" + ] + }, + "gifs": { + "type": "array", + "items": { + "$ref": "#/definitions/TenorGifResponse" + } + } }, + "additionalProperties": false, + "required": [ + "categories", + "gifs" + ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -352867,9 +352627,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -353797,21 +353554,11 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "TokenResponse": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "settings": { - "$ref": "#/definitions/UserSettings" - } + "TenorGifsResponse": { + "type": "array", + "items": { + "$ref": "#/definitions/TenorGifResponse" }, - "additionalProperties": false, - "required": [ - "settings", - "token" - ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -357107,9 +356854,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -358037,15 +357781,19 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "TokenOnlyResponse": { + "TokenResponse": { "type": "object", "properties": { "token": { "type": "string" + }, + "settings": { + "$ref": "#/definitions/UserSettings" } }, "additionalProperties": false, "required": [ + "settings", "token" ], "definitions": { @@ -361343,9 +361091,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -362273,22 +362018,15 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "TokenWithBackupCodesResponse": { + "TokenOnlyResponse": { "type": "object", "properties": { "token": { "type": "string" - }, - "backup_codes": { - "type": "array", - "items": { - "$ref": "#/definitions/BackupCode" - } } }, "additionalProperties": false, "required": [ - "backup_codes", "token" ], "definitions": { @@ -365586,9 +365324,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -366516,227 +366251,23 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIGuild": { + "TokenWithBackupCodesResponse": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "id": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "parent": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "nsfw": { - "type": "boolean" - }, - "invites": { - "type": "array", - "items": { - "$ref": "#/definitions/Invite" - } - }, - "voice_states": { - "type": "array", - "items": { - "$ref": "#/definitions/VoiceState" - } - }, - "webhooks": { - "type": "array", - "items": { - "$ref": "#/definitions/Webhook" - } - }, - "_do_validate": { - "type": "object", - "additionalProperties": false - }, - "roles": { - "type": "array", - "items": { - "$ref": "#/definitions/Role" - } - }, - "banner": { - "type": "string" - }, - "description": { - "type": "string" - }, - "unavailable": { - "type": "boolean" - }, - "channels": { - "type": "array", - "items": { - "$ref": "#/definitions/Channel" - } - }, - "region": { - "type": "string" - }, - "system_channel_id": { - "type": "string" - }, - "rules_channel_id": { - "type": "string" - }, - "afk_timeout": { - "type": "integer" - }, - "explicit_content_filter": { - "type": "integer" - }, - "afk_channel_id": { - "type": "string" - }, - "bans": { - "type": "array", - "items": { - "$ref": "#/definitions/Ban" - } - }, - "default_message_notifications": { - "type": "integer" - }, - "discovery_splash": { - "type": "string" - }, - "features": { - "type": "array", - "items": { - "type": "string" - } - }, - "primary_category_id": { - "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": "#/definitions/Member" - } - }, - "template_id": { - "type": "string" - }, - "emojis": { - "type": "array", - "items": { - "$ref": "#/definitions/Emoji" - } - }, - "stickers": { - "type": "array", - "items": { - "$ref": "#/definitions/Sticker" - } - }, - "mfa_level": { - "type": "integer" - }, - "preferred_locale": { - "type": "string" - }, - "premium_subscription_count": { - "type": "integer" - }, - "premium_tier": { - "type": "integer" - }, - "public_updates_channel_id": { - "type": "string" - }, - "splash": { - "type": "string" - }, - "system_channel_flags": { - "type": "integer" - }, - "verification_level": { - "type": "integer" - }, - "welcome_screen": { - "$ref": "#/definitions/GuildWelcomeScreen" - }, - "widget_channel_id": { + "token": { "type": "string" }, - "widget_enabled": { - "type": "boolean" - }, - "nsfw_level": { - "type": "integer" - }, - "permissions": { - "type": "integer" - }, - "premium_progress_bar_enabled": { - "type": "boolean" - }, - "channel_ordering": { + "backup_codes": { "type": "array", "items": { - "type": "string" + "$ref": "#/definitions/BackupCode" } } }, "additionalProperties": false, "required": [ - "_do_validate", - "assign", - "bans", - "channel_ordering", - "channels", - "emojis", - "features", - "hasId", - "id", - "invites", - "members", - "name", - "nsfw", - "premium_progress_bar_enabled", - "public_updates_channel_id", - "recover", - "reload", - "remove", - "roles", - "save", - "softRemove", - "stickers", - "toJSON", - "unavailable", - "voice_states", - "webhooks", - "welcome_screen", - "widget_enabled" + "backup_codes", + "token" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -370033,9 +369564,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -370963,8 +370491,228 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIPublicUser": { - "$ref": "#/definitions/PublicUser", + "APIGuild": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "parent": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "invites": { + "type": "array", + "items": { + "$ref": "#/definitions/Invite" + } + }, + "voice_states": { + "type": "array", + "items": { + "$ref": "#/definitions/VoiceState" + } + }, + "webhooks": { + "type": "array", + "items": { + "$ref": "#/definitions/Webhook" + } + }, + "_do_validate": { + "type": "object", + "additionalProperties": false + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "banner": { + "type": "string" + }, + "description": { + "type": "string" + }, + "unavailable": { + "type": "boolean" + }, + "channels": { + "type": "array", + "items": { + "$ref": "#/definitions/Channel" + } + }, + "region": { + "type": "string" + }, + "system_channel_id": { + "type": "string" + }, + "rules_channel_id": { + "type": "string" + }, + "afk_timeout": { + "type": "integer" + }, + "explicit_content_filter": { + "type": "integer" + }, + "afk_channel_id": { + "type": "string" + }, + "bans": { + "type": "array", + "items": { + "$ref": "#/definitions/Ban" + } + }, + "default_message_notifications": { + "type": "integer" + }, + "discovery_splash": { + "type": "string" + }, + "features": { + "type": "array", + "items": { + "type": "string" + } + }, + "primary_category_id": { + "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": "#/definitions/Member" + } + }, + "template_id": { + "type": "string" + }, + "emojis": { + "type": "array", + "items": { + "$ref": "#/definitions/Emoji" + } + }, + "stickers": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "mfa_level": { + "type": "integer" + }, + "preferred_locale": { + "type": "string" + }, + "premium_subscription_count": { + "type": "integer" + }, + "premium_tier": { + "type": "integer" + }, + "public_updates_channel_id": { + "type": "string" + }, + "splash": { + "type": "string" + }, + "system_channel_flags": { + "type": "integer" + }, + "verification_level": { + "type": "integer" + }, + "welcome_screen": { + "$ref": "#/definitions/GuildWelcomeScreen" + }, + "widget_channel_id": { + "type": "string" + }, + "widget_enabled": { + "type": "boolean" + }, + "nsfw_level": { + "type": "integer" + }, + "permissions": { + "type": "integer" + }, + "premium_progress_bar_enabled": { + "type": "boolean" + }, + "channel_ordering": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "_do_validate", + "assign", + "bans", + "channel_ordering", + "channels", + "emojis", + "features", + "hasId", + "id", + "invites", + "members", + "name", + "nsfw", + "premium_progress_bar_enabled", + "public_updates_channel_id", + "recover", + "reload", + "remove", + "roles", + "save", + "softRemove", + "stickers", + "toJSON", + "unavailable", + "voice_states", + "webhooks", + "welcome_screen", + "widget_enabled" + ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -374260,9 +374008,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -375190,108 +374935,8 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIPrivateUser": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "flags": { - "type": "integer" - }, - "premium_since": { - "type": "string", - "format": "date-time" - }, - "avatar": { - "type": "string" - }, - "verified": { - "type": "boolean" - }, - "username": { - "type": "string" - }, - "global_name": { - "type": "string" - }, - "legacy_username": { - "type": "string" - }, - "discriminator": { - "type": "string" - }, - "public_flags": { - "type": "integer" - }, - "accent_color": { - "type": "integer" - }, - "banner": { - "type": "string" - }, - "bio": { - "type": "string" - }, - "bot": { - "type": "boolean" - }, - "premium_type": { - "type": "integer" - }, - "theme_colors": { - "type": "array", - "items": { - "type": "integer" - } - }, - "pronouns": { - "type": "string" - }, - "mfa_enabled": { - "type": "boolean" - }, - "email": { - "type": "string" - }, - "phone": { - "type": "string" - }, - "nsfw_allowed": { - "type": "boolean" - }, - "premium": { - "type": "boolean" - }, - "purchased_flags": { - "type": "integer" - }, - "premium_usage_flags": { - "type": "integer" - }, - "disabled": { - "type": "boolean" - } - }, - "additionalProperties": false, - "required": [ - "bio", - "bot", - "disabled", - "discriminator", - "flags", - "id", - "mfa_enabled", - "nsfw_allowed", - "premium", - "premium_since", - "premium_type", - "premium_usage_flags", - "public_flags", - "purchased_flags", - "username", - "verified" - ], + "APIPublicUser": { + "$ref": "#/definitions/PublicUser", "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -378587,9 +378232,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -379517,11 +379159,105 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIGuildArray": { - "type": "array", - "items": { - "$ref": "#/definitions/APIGuild" + "APIPrivateUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "flags": { + "type": "integer" + }, + "premium_since": { + "type": "string", + "format": "date-time" + }, + "avatar": { + "type": "string" + }, + "verified": { + "type": "boolean" + }, + "username": { + "type": "string" + }, + "global_name": { + "type": "string" + }, + "discriminator": { + "type": "string" + }, + "public_flags": { + "type": "integer" + }, + "accent_color": { + "type": "integer" + }, + "banner": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "bot": { + "type": "boolean" + }, + "premium_type": { + "type": "integer" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + }, + "mfa_enabled": { + "type": "boolean" + }, + "email": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "nsfw_allowed": { + "type": "boolean" + }, + "premium": { + "type": "boolean" + }, + "purchased_flags": { + "type": "integer" + }, + "premium_usage_flags": { + "type": "integer" + }, + "disabled": { + "type": "boolean" + } }, + "additionalProperties": false, + "required": [ + "bio", + "bot", + "disabled", + "discriminator", + "flags", + "id", + "mfa_enabled", + "nsfw_allowed", + "premium", + "premium_since", + "premium_type", + "premium_usage_flags", + "public_flags", + "purchased_flags", + "username", + "verified" + ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -382817,9 +382553,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -383747,10 +383480,10 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIDMChannelArray": { + "APIGuildArray": { "type": "array", "items": { - "$ref": "#/definitions/DmChannelDTO" + "$ref": "#/definitions/APIGuild" }, "definitions": { "ChannelPermissionOverwriteType": { @@ -387047,9 +386780,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -387977,10 +387707,10 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIBackupCodeArray": { + "APIDMChannelArray": { "type": "array", "items": { - "$ref": "#/definitions/BackupCode" + "$ref": "#/definitions/DmChannelDTO" }, "definitions": { "ChannelPermissionOverwriteType": { @@ -391277,9 +391007,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -392207,111 +391934,11 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "UserUpdateResponse": { - "type": "object", - "properties": { - "newToken": { - "type": "string" - }, - "id": { - "type": "string" - }, - "flags": { - "type": "integer" - }, - "premium_since": { - "type": "string", - "format": "date-time" - }, - "avatar": { - "type": "string" - }, - "verified": { - "type": "boolean" - }, - "username": { - "type": "string" - }, - "global_name": { - "type": "string" - }, - "legacy_username": { - "type": "string" - }, - "discriminator": { - "type": "string" - }, - "public_flags": { - "type": "integer" - }, - "accent_color": { - "type": "integer" - }, - "banner": { - "type": "string" - }, - "bio": { - "type": "string" - }, - "bot": { - "type": "boolean" - }, - "premium_type": { - "type": "integer" - }, - "theme_colors": { - "type": "array", - "items": { - "type": "integer" - } - }, - "pronouns": { - "type": "string" - }, - "mfa_enabled": { - "type": "boolean" - }, - "email": { - "type": "string" - }, - "phone": { - "type": "string" - }, - "nsfw_allowed": { - "type": "boolean" - }, - "premium": { - "type": "boolean" - }, - "purchased_flags": { - "type": "integer" - }, - "premium_usage_flags": { - "type": "integer" - }, - "disabled": { - "type": "boolean" - } + "APIBackupCodeArray": { + "type": "array", + "items": { + "$ref": "#/definitions/BackupCode" }, - "additionalProperties": false, - "required": [ - "bio", - "bot", - "disabled", - "discriminator", - "flags", - "id", - "mfa_enabled", - "nsfw_allowed", - "premium", - "premium_since", - "premium_type", - "premium_usage_flags", - "public_flags", - "purchased_flags", - "username", - "verified" - ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -395607,9 +395234,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -396537,9 +396161,108 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "ApplicationDetectableResponse": { - "type": "array", - "items": {}, + "UserUpdateResponse": { + "type": "object", + "properties": { + "newToken": { + "type": "string" + }, + "id": { + "type": "string" + }, + "flags": { + "type": "integer" + }, + "premium_since": { + "type": "string", + "format": "date-time" + }, + "avatar": { + "type": "string" + }, + "verified": { + "type": "boolean" + }, + "username": { + "type": "string" + }, + "global_name": { + "type": "string" + }, + "discriminator": { + "type": "string" + }, + "public_flags": { + "type": "integer" + }, + "accent_color": { + "type": "integer" + }, + "banner": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "bot": { + "type": "boolean" + }, + "premium_type": { + "type": "integer" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + }, + "mfa_enabled": { + "type": "boolean" + }, + "email": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "nsfw_allowed": { + "type": "boolean" + }, + "premium": { + "type": "boolean" + }, + "purchased_flags": { + "type": "integer" + }, + "premium_usage_flags": { + "type": "integer" + }, + "disabled": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "bio", + "bot", + "disabled", + "discriminator", + "flags", + "id", + "mfa_enabled", + "nsfw_allowed", + "premium", + "premium_since", + "premium_type", + "premium_usage_flags", + "public_flags", + "purchased_flags", + "username", + "verified" + ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -399835,9 +399558,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -400765,7 +400485,7 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "ApplicationEntitlementsResponse": { + "ApplicationDetectableResponse": { "type": "array", "items": {}, "definitions": { @@ -404063,9 +403783,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -404993,7 +404710,7 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "ApplicationSkusResponse": { + "ApplicationEntitlementsResponse": { "type": "array", "items": {}, "definitions": { @@ -408291,9 +408008,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -409221,11 +408935,9 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIApplicationArray": { + "ApplicationSkusResponse": { "type": "array", - "items": { - "$ref": "#/definitions/Application" - }, + "items": {}, "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -412521,9 +412233,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -413451,10 +413160,10 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIInviteArray": { + "APIApplicationArray": { "type": "array", "items": { - "$ref": "#/definitions/Invite" + "$ref": "#/definitions/Application" }, "definitions": { "ChannelPermissionOverwriteType": { @@ -416751,9 +416460,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -417681,10 +417387,10 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIMessageArray": { + "APIInviteArray": { "type": "array", "items": { - "$ref": "#/definitions/Message" + "$ref": "#/definitions/Invite" }, "definitions": { "ChannelPermissionOverwriteType": { @@ -420981,9 +420687,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -421911,10 +421614,10 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIWebhookArray": { + "APIMessageArray": { "type": "array", "items": { - "$ref": "#/definitions/Webhook" + "$ref": "#/definitions/Message" }, "definitions": { "ChannelPermissionOverwriteType": { @@ -425211,9 +424914,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -426141,10 +425841,10 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIDiscoveryCategoryArray": { + "APIWebhookArray": { "type": "array", "items": { - "$ref": "#/definitions/Categories" + "$ref": "#/definitions/Webhook" }, "definitions": { "ChannelPermissionOverwriteType": { @@ -429441,9 +429141,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -430371,80 +430068,11 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIGeneralConfiguration": { - "type": "object", - "properties": { - "instanceName": { - "type": "string", - "default": "Spacebar Instance" - }, - "instanceDescription": { - "type": [ - "null", - "string" - ], - "default": "This is a Spacebar instance made in the pre-release days" - }, - "frontPage": { - "type": [ - "null", - "string" - ], - "default": null - }, - "tosPage": { - "type": [ - "null", - "string" - ], - "default": null - }, - "correspondenceEmail": { - "type": [ - "null", - "string" - ], - "default": null - }, - "correspondenceUserID": { - "type": [ - "null", - "string" - ], - "default": null - }, - "image": { - "type": [ - "null", - "string" - ], - "default": null - }, - "instanceId": { - "type": "string" - }, - "autoCreateBotUsers": { - "type": "boolean", - "default": false - }, - "uniqueUsernames": { - "type": "boolean", - "default": false - } + "APIDiscoveryCategoryArray": { + "type": "array", + "items": { + "$ref": "#/definitions/Categories" }, - "additionalProperties": false, - "required": [ - "autoCreateBotUsers", - "correspondenceEmail", - "correspondenceUserID", - "frontPage", - "image", - "instanceDescription", - "instanceId", - "instanceName", - "tosPage", - "uniqueUsernames" - ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -433740,9 +433368,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -434670,11 +434295,80 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIChannelArray": { - "type": "array", - "items": { - "$ref": "#/definitions/Channel" + "APIGeneralConfiguration": { + "type": "object", + "properties": { + "instanceName": { + "type": "string", + "default": "Spacebar Instance" + }, + "instanceDescription": { + "type": [ + "null", + "string" + ], + "default": "This is a Spacebar instance made in the pre-release days" + }, + "frontPage": { + "type": [ + "null", + "string" + ], + "default": null + }, + "tosPage": { + "type": [ + "null", + "string" + ], + "default": null + }, + "correspondenceEmail": { + "type": [ + "null", + "string" + ], + "default": null + }, + "correspondenceUserID": { + "type": [ + "null", + "string" + ], + "default": null + }, + "image": { + "type": [ + "null", + "string" + ], + "default": null + }, + "instanceId": { + "type": "string" + }, + "autoCreateBotUsers": { + "type": "boolean", + "default": false + }, + "uniqueUsernames": { + "type": "boolean", + "default": false + } }, + "additionalProperties": false, + "required": [ + "autoCreateBotUsers", + "correspondenceEmail", + "correspondenceUserID", + "frontPage", + "image", + "instanceDescription", + "instanceId", + "instanceName", + "tosPage", + "uniqueUsernames" + ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -437970,9 +437664,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -438900,10 +438591,10 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIEmojiArray": { + "APIChannelArray": { "type": "array", "items": { - "$ref": "#/definitions/Emoji" + "$ref": "#/definitions/Channel" }, "definitions": { "ChannelPermissionOverwriteType": { @@ -442200,9 +441891,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -443130,10 +442818,10 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIMemberArray": { + "APIEmojiArray": { "type": "array", "items": { - "$ref": "#/definitions/Member" + "$ref": "#/definitions/Emoji" }, "definitions": { "ChannelPermissionOverwriteType": { @@ -446430,9 +446118,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -447360,58 +447045,11 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIPublicMember": { - "additionalProperties": false, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "guild_id": { - "type": "string" - }, - "nick": { - "type": "string" - }, - "joined_at": { - "type": "string", - "format": "date-time" - }, - "pending": { - "type": "boolean" - }, - "deaf": { - "type": "boolean" - }, - "mute": { - "type": "boolean" - }, - "premium_since": { - "type": "integer" - }, - "avatar": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/PublicUser" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - } + "APIMemberArray": { + "type": "array", + "items": { + "$ref": "#/definitions/Member" }, - "required": [ - "deaf", - "guild_id", - "id", - "joined_at", - "mute", - "pending", - "roles", - "user" - ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -448449,8 +448087,10 @@ "type": "integer", "default": 0 }, -<<<<<<< HEAD -======= + "position": { + "description": "Must be calculated Channel.calculatePosition", + "type": "integer" + }, "id": { "type": "string" } @@ -448464,6 +448104,7 @@ "nsfw", "owner", "parent_id", + "position", "type" ] }, @@ -449524,7 +449165,6 @@ }, "additionalProperties": false, "required": [ - "avatar", "banner", "bio", "communication_disabled_until", @@ -449569,13 +449209,9 @@ "permissions": { "type": "string" }, ->>>>>>> 99963e1b (update user modify for unique usernames) "position": { - "description": "Must be calculated Channel.calculatePosition", "type": "integer" }, -<<<<<<< HEAD -======= "icon": { "type": "string" }, @@ -450700,13 +450336,13 @@ "type": "string", "format": "date-time" }, - "username": { + "avatar": { "type": "string" }, - "global_name": { + "username": { "type": "string" }, - "legacy_username": { + "global_name": { "type": "string" }, "discriminator": { @@ -450715,9 +450351,6 @@ "public_flags": { "type": "integer" }, - "avatar": { - "type": "string" - }, "accent_color": { "type": "integer" }, @@ -451092,6 +450725,12 @@ }, "premium_progress_bar_enabled": { "type": "boolean" + }, + "channel_ordering": { + "type": "array", + "items": { + "type": "string" + } } }, "additionalProperties": false, @@ -451099,6 +450738,7 @@ "_do_validate", "assign", "bans", + "channel_ordering", "channels", "emojis", "features", @@ -451632,239 +451272,57 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "APIGuildWithJoinedAt": { + "APIPublicMember": { + "additionalProperties": false, "type": "object", "properties": { - "joined_at": { - "type": "string" - }, - "afk_channel_id": { - "type": "string" - }, - "afk_channel": { - "$ref": "#/definitions/Channel" - }, - "afk_timeout": { - "type": "integer" - }, - "bans": { - "type": "array", - "items": { - "$ref": "#/definitions/Ban" - } - }, - "banner": { - "type": "string" - }, - "default_message_notifications": { - "type": "integer" - }, - "description": { - "type": "string" - }, - "discovery_splash": { + "id": { "type": "string" }, - "explicit_content_filter": { - "type": "integer" - }, - "features": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "primary_category_id": { + "guild_id": { "type": "string" }, - "icon": { + "nick": { "type": "string" }, - "large": { - "type": "boolean", - "default": false - }, - "max_members": { - "type": "integer" + "joined_at": { + "type": "string", + "format": "date-time" }, - "max_presences": { - "type": "integer" + "pending": { + "type": "boolean" }, - "max_video_channel_users": { - "type": "integer" + "deaf": { + "type": "boolean" }, - "member_count": { - "type": "integer" + "mute": { + "type": "boolean" }, - "presence_count": { + "premium_since": { "type": "integer" }, - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/Member" - } - }, - "roles": { - "type": "array", - "items": { - "$ref": "#/definitions/Role" - } - }, - "channels": { - "type": "array", - "items": { - "$ref": "#/definitions/Channel" - } - }, - "template_id": { + "avatar": { "type": "string" }, - "template": { - "$ref": "#/definitions/Template" - }, - "emojis": { - "type": "array", - "items": { - "$ref": "#/definitions/Emoji" - } - }, - "stickers": { - "type": "array", - "items": { - "$ref": "#/definitions/Sticker" - } - }, - "invites": { - "type": "array", - "items": { - "$ref": "#/definitions/Invite" - } - }, - "voice_states": { - "type": "array", - "items": { - "$ref": "#/definitions/VoiceState" - } + "user": { + "$ref": "#/definitions/PublicUser" }, - "webhooks": { + "roles": { "type": "array", "items": { - "$ref": "#/definitions/Webhook" + "type": "string" } - }, - "mfa_level": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "owner": { - "$ref": "#/definitions/User" - }, - "preferred_locale": { - "type": "string" - }, - "premium_subscription_count": { - "type": "integer" - }, - "premium_tier": { - "type": "integer" - }, - "public_updates_channel_id": { - "type": "string" - }, - "public_updates_channel": { - "$ref": "#/definitions/Channel" - }, - "rules_channel_id": { - "type": "string" - }, - "rules_channel": { - "type": "string" - }, - "region": { - "type": "string" - }, - "splash": { - "type": "string" - }, - "system_channel_id": { - "type": "string" - }, - "system_channel": { - "$ref": "#/definitions/Channel" - }, - "system_channel_flags": { - "type": "integer" - }, - "unavailable": { - "type": "boolean", - "default": false - }, - "verification_level": { - "type": "integer" - }, - "welcome_screen": { - "$ref": "#/definitions/GuildWelcomeScreen" - }, - "widget_channel_id": { - "type": "string" - }, - "widget_channel": { - "$ref": "#/definitions/Channel" - }, - "widget_enabled": { - "type": "boolean", - "default": true - }, - "nsfw_level": { - "type": "integer" - }, - "nsfw": { - "type": "boolean", - "default": false - }, - "parent": { - "type": "string" - }, - "permissions": { - "type": "integer" - }, - "premium_progress_bar_enabled": { - "type": "boolean", - "default": false - }, - "id": { - "type": "string" } }, - "additionalProperties": false, "required": [ - "bans", - "channels", - "emojis", - "features", + "deaf", + "guild_id", "id", - "invites", "joined_at", - "members", - "name", - "nsfw", - "premium_progress_bar_enabled", - "public_updates_channel_id", + "mute", + "pending", "roles", - "stickers", - "template", - "unavailable", - "voice_states", - "webhooks", - "welcome_screen", - "widget_enabled" + "user" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -452751,6 +452209,12 @@ "type": "boolean", "default": false }, + "channel_ordering": { + "type": "array", + "items": { + "type": "string" + } + }, "id": { "type": "string" } @@ -452758,6 +452222,7 @@ "additionalProperties": false, "required": [ "bans", + "channel_ordering", "channels", "emojis", "features", @@ -452830,9 +452295,6 @@ "default_auto_archive_duration": { "type": "integer" }, - "position": { - "type": "integer" - }, "permission_overwrites": { "type": "array", "items": { @@ -452899,7 +452361,10 @@ "type": "integer", "default": 0 }, ->>>>>>> 99963e1b (update user modify for unique usernames) + "position": { + "description": "Must be calculated Channel.calculatePosition", + "type": "integer" + }, "id": { "type": "string" } @@ -455154,9 +454619,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -455728,6 +455190,10 @@ "type": "integer", "default": 1048576 }, + "minUsername": { + "type": "integer", + "default": 2 + }, "maxUsername": { "type": "integer", "default": 32 @@ -455741,7 +455207,8 @@ "required": [ "maxFriends", "maxGuilds", - "maxUsername" + "maxUsername", + "minUsername" ] }, "GuildLimits": { @@ -459615,9 +459082,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -463845,9 +463309,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -468075,9 +467536,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -472305,9 +471763,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -476535,9 +475990,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -480791,9 +480243,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -485021,9 +484470,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -489272,9 +488718,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -493516,9 +492959,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -497872,20 +497312,12 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, "public_flags": { "type": "integer" }, -<<<<<<< HEAD -======= - "avatar": { - "type": "string" - }, "accent_color": { "type": "integer" }, @@ -498260,6 +497692,12 @@ }, "premium_progress_bar_enabled": { "type": "boolean" + }, + "channel_ordering": { + "type": "array", + "items": { + "type": "string" + } } }, "additionalProperties": false, @@ -498267,6 +497705,7 @@ "_do_validate", "assign", "bans", + "channel_ordering", "channels", "emojis", "features", @@ -498800,29 +498239,38 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "UserRelationshipsResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/RelationshipType" - }, - "nickname": { - "type": "null" + "UserRelationsResponse": { + "type": "array", + "items": { + "additionalProperties": false, + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "username": { + "type": "string" + }, + "global_name": { + "type": "string" + }, + "discriminator": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "public_flags": { + "type": "integer" + } }, - "user": { - "$ref": "#/definitions/PublicUser" - } + "required": [ + "discriminator", + "id", + "public_flags", + "username" + ] }, - "additionalProperties": false, - "required": [ - "id", - "nickname", - "type", - "user" - ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -499708,6 +499156,12 @@ "type": "boolean", "default": false }, + "channel_ordering": { + "type": "array", + "items": { + "type": "string" + } + }, "id": { "type": "string" } @@ -499715,6 +499169,7 @@ "additionalProperties": false, "required": [ "bans", + "channel_ordering", "channels", "emojis", "features", @@ -499787,9 +499242,6 @@ "default_auto_archive_duration": { "type": "integer" }, - "position": { - "type": "integer" - }, "permission_overwrites": { "type": "array", "items": { @@ -499856,6 +499308,10 @@ "type": "integer", "default": 0 }, + "position": { + "description": "Must be calculated Channel.calculatePosition", + "type": "integer" + }, "id": { "type": "string" } @@ -499869,6 +499325,7 @@ "nsfw", "owner", "parent_id", + "position", "type" ] }, @@ -500929,7 +500386,6 @@ }, "additionalProperties": false, "required": [ - "avatar", "banner", "bio", "communication_disabled_until", @@ -502101,13 +501557,13 @@ "type": "string", "format": "date-time" }, - "username": { + "avatar": { "type": "string" }, - "global_name": { + "username": { "type": "string" }, - "legacy_username": { + "global_name": { "type": "string" }, "discriminator": { @@ -502116,10 +501572,6 @@ "public_flags": { "type": "integer" }, - "avatar": { - "type": "string" - }, ->>>>>>> 99963e1b (update user modify for unique usernames) "accent_color": { "type": "integer" }, @@ -503041,38 +502493,29 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "UserRelationsResponse": { - "type": "array", - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "username": { - "type": "string" - }, - "global_name": { - "type": "string" - }, - "discriminator": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "public_flags": { - "type": "integer" - } + "UserRelationshipsResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" }, - "required": [ - "discriminator", - "id", - "public_flags", - "username" - ] + "type": { + "$ref": "#/definitions/RelationshipType" + }, + "nickname": { + "type": "null" + }, + "user": { + "$ref": "#/definitions/PublicUser" + } }, + "additionalProperties": false, + "required": [ + "id", + "nickname", + "type", + "user" + ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -506368,9 +505811,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -506942,6 +506382,10 @@ "type": "integer", "default": 1048576 }, + "minUsername": { + "type": "integer", + "default": 2 + }, "maxUsername": { "type": "integer", "default": 32 @@ -506955,7 +506399,8 @@ "required": [ "maxFriends", "maxGuilds", - "maxUsername" + "maxUsername", + "minUsername" ] }, "GuildLimits": { @@ -507293,28 +506738,20 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "UserRelationshipsResponse": { + "WebAuthnCreateResponse": { "type": "object", "properties": { - "id": { + "name": { "type": "string" }, - "type": { - "$ref": "#/definitions/RelationshipType" - }, - "nickname": { - "type": "null" - }, - "user": { - "$ref": "#/definitions/PublicUser" + "id": { + "type": "string" } }, "additionalProperties": false, "required": [ "id", - "nickname", - "type", - "user" + "name" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -510611,9 +510048,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -511541,20 +510975,20 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "WebAuthnCreateResponse": { + "WebhookCreateResponse": { "type": "object", "properties": { - "name": { - "type": "string" + "user": { + "$ref": "#/definitions/User" }, - "id": { - "type": "string" + "hook": { + "$ref": "#/definitions/Webhook" } }, "additionalProperties": false, "required": [ - "id", - "name" + "hook", + "user" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -514851,9 +514285,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -515781,21 +515212,8 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "WebhookCreateResponse": { - "type": "object", - "properties": { - "user": { - "$ref": "#/definitions/User" - }, - "hook": { - "$ref": "#/definitions/Webhook" - } - }, - "additionalProperties": false, - "required": [ - "hook", - "user" - ], + "ActivitySchema": { + "$ref": "#/definitions/ActivitySchema", "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -519091,9 +518509,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -520021,8 +519436,20 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "ActivitySchema": { - "$ref": "#/definitions/ActivitySchema", + "BulkDeleteSchema": { + "type": "object", + "properties": { + "messages": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "messages" + ], "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -523318,9 +522745,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -524248,19 +523672,34 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "BulkDeleteSchema": { + "MFAResponse": { "type": "object", "properties": { - "messages": { - "type": "array", - "items": { - "type": "string" - } + "ticket": { + "type": "string" + }, + "mfa": { + "type": "boolean", + "enum": [ + true + ] + }, + "sms": { + "type": "boolean", + "enum": [ + false + ] + }, + "token": { + "type": "null" } }, "additionalProperties": false, "required": [ - "messages" + "mfa", + "sms", + "ticket", + "token" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -527557,9 +526996,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -528487,9 +527923,12 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "MFAResponse": { + "WebAuthnResponse": { "type": "object", "properties": { + "webauthn": { + "type": "string" + }, "ticket": { "type": "string" }, @@ -528514,7 +527953,8 @@ "mfa", "sms", "ticket", - "token" + "token", + "webauthn" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -531811,9 +531251,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -532741,38 +532178,17 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "WebAuthnResponse": { - "type": "object", - "properties": { - "webauthn": { - "type": "string" - }, - "ticket": { - "type": "string" - }, - "mfa": { - "type": "boolean", - "enum": [ - true - ] + "LoginResponse": { + "anyOf": [ + { + "$ref": "#/definitions/TokenResponse" }, - "sms": { - "type": "boolean", - "enum": [ - false - ] + { + "$ref": "#/definitions/MFAResponse" }, - "token": { - "type": "null" + { + "$ref": "#/definitions/WebAuthnResponse" } - }, - "additionalProperties": false, - "required": [ - "mfa", - "sms", - "ticket", - "token", - "webauthn" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -536069,9 +535485,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -536999,17 +536412,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "LoginResponse": { - "anyOf": [ - { - "$ref": "#/definitions/TokenResponse" - }, - { - "$ref": "#/definitions/MFAResponse" - }, - { - "$ref": "#/definitions/WebAuthnResponse" + "MemberNickChangeSchema": { + "type": "object", + "properties": { + "nick": { + "type": "string" } + }, + "additionalProperties": false, + "required": [ + "nick" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -540306,9 +539718,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -541236,16 +540645,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "MemberNickChangeSchema": { + "PruneSchema": { "type": "object", "properties": { - "nick": { - "type": "string" + "days": { + "type": "integer" } }, "additionalProperties": false, "required": [ - "nick" + "days" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -544542,9 +543951,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -545472,16 +544878,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "PruneSchema": { + "UsernameAttemptResponse": { "type": "object", "properties": { - "days": { - "type": "integer" + "taken": { + "type": "boolean" } }, "additionalProperties": false, "required": [ - "days" + "taken" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -548778,9 +548184,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, @@ -553020,9 +552423,6 @@ "global_name": { "type": "string" }, - "legacy_username": { - "type": "string" - }, "discriminator": { "type": "string" }, diff --git a/src/api/routes/auth/register.ts b/src/api/routes/auth/register.ts index de1cbd3d..33fc6062 100644 --- a/src/api/routes/auth/register.ts +++ b/src/api/routes/auth/register.ts @@ -50,9 +50,18 @@ router.post( }), async (req: Request, res: Response) => { const body = req.body as RegisterSchema; - const { register, security, limits } = Config.get(); + const { register, security, limits, general } = Config.get(); const ip = getIpAdress(req); + if (!general.uniqueUsernames && body.unique_username_registration) { + throw FieldErrors({ + unique_username_registration: { + code: "UNIQUE_USERNAMES_DISABLED", + message: req.t("auth:register.UNIQUE_USERNAMES_DISABLED"), + }, + }); + } + // Reg tokens // They're a one time use token that bypasses registration limits ( rates, disabled reg, etc ) let regTokenUsed = false; diff --git a/src/api/routes/unique-username/username-attempt-unauthed.ts b/src/api/routes/unique-username/username-attempt-unauthed.ts new file mode 100644 index 00000000..a1f63a69 --- /dev/null +++ b/src/api/routes/unique-username/username-attempt-unauthed.ts @@ -0,0 +1,33 @@ +import { route } from "@spacebar/api"; +import { Config, User, UsernameAttemptUnauthedSchema } from "@spacebar/util"; +import { Request, Response, Router } from "express"; +import { HTTPError } from "lambert-server"; +const router = Router(); + +router.post( + "/", + route({ + requestBody: "UsernameAttemptUnauthedSchema", + responses: { + 200: { body: "UsernameAttemptResponse" }, + 400: { body: "APIErrorResponse" }, + }, + description: "Check if a username is available", + }), + async (req: Request, res: Response) => { + const body = req.body as UsernameAttemptUnauthedSchema; + const { uniqueUsernames } = Config.get().general; + if (!uniqueUsernames) { + throw new HTTPError( + "Unique Usernames feature is not enabled on this instance.", + 400, + ); + } + + res.json({ + taken: !User.isUsernameAvailable(body.username), + }); + }, +); + +export default router; diff --git a/src/api/routes/unique-username/username-suggestions-unauthed.ts b/src/api/routes/unique-username/username-suggestions-unauthed.ts new file mode 100644 index 00000000..9b112b55 --- /dev/null +++ b/src/api/routes/unique-username/username-suggestions-unauthed.ts @@ -0,0 +1,37 @@ +import { route } from "@spacebar/api"; +import { Request, Response, Router } from "express"; +import { HTTPError } from "lambert-server"; +import { Config } from "../../../util"; +const router = Router(); + +router.get( + "/", + route({ + query: { + global_name: { + type: "string", + required: false, + }, + }, + responses: { + 400: { body: "APIErrorResponse" }, + }, + }), + async (req: Request, res: Response) => { + const globalName = req.query.globalName as string | undefined; + const { uniqueUsernames } = Config.get().general; + if (!uniqueUsernames) { + throw new HTTPError( + "Unique Usernames feature is not enabled on this instance.", + 400, + ); + } + + // return a random suggestion + if (!globalName) return res.json({ username: "" }); + // return a suggestion based on the globalName + return res.json({ username: globalName }); + }, +); + +export default router; diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts index f4578126..55d2ce12 100644 --- a/src/api/routes/users/@me/index.ts +++ b/src/api/routes/users/@me/index.ts @@ -172,10 +172,7 @@ router.patch( } // check if username is already taken (pomelo only) - const userCount = await User.count({ - where: { username: body.username }, - }); - if (userCount > 0) { + if (!User.isUsernameAvailable(body.username)) throw FieldErrors({ username: { code: "USERNAME_ALREADY_TAKEN", @@ -184,7 +181,6 @@ router.patch( ), }, }); - } } // handle username changes (old username system) diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts index d1fbb5c2..5ec9862e 100644 --- a/src/util/entities/User.ts +++ b/src/util/entities/User.ts @@ -344,6 +344,7 @@ export class User extends BaseClass { password, id, req, + global_name, }: { username: string; password?: string; @@ -351,8 +352,10 @@ export class User extends BaseClass { date_of_birth?: Date; // "2000-04-03" id?: string; req?: Request; + global_name?: string; }) { const { uniqueUsernames } = Config.get().general; + const { minUsername, maxUsername } = Config.get().limits.user; // trim special uf8 control characters -> Backspace, Newline, ... username = trimSpecial(username); @@ -374,6 +377,34 @@ export class User extends BaseClass { } } + if (uniqueUsernames) { + // check if there is already an account with this username + if (!User.isUsernameAvailable(username)) + throw FieldErrors({ + username: { + code: "USERNAME_ALREADY_TAKEN", + message: + req?.t("common:field.USERNAME_ALREADY_TAKEN") || "", + }, + }); + + // validate username length + if ( + username.length < minUsername || + username.length > maxUsername + ) { + throw FieldErrors({ + username: { + code: "BASE_TYPE_BAD_LENGTH", + message: + req?.t("common:field.BASE_TYPE_BAD_LENGTH", { + length: `${minUsername} and ${maxUsername}`, + }) || "", + }, + }); + } + } + // TODO: save date_of_birth // appearently discord doesn't save the date of birth and just calculate if nsfw is allowed // if nsfw_allowed is null/undefined it'll require date_of_birth to set it to true/false @@ -386,6 +417,7 @@ export class User extends BaseClass { const user = User.create({ username: uniqueUsernames ? username.toLowerCase() : username, + global_name: uniqueUsernames ? global_name : undefined, discriminator, id: id || Snowflake.generate(), email: email, @@ -429,6 +461,14 @@ export class User extends BaseClass { return user; } + + static async isUsernameAvailable(username: string) { + const user = await User.findOne({ + where: { username }, + select: ["id"], + }); + return !user; + } } export const CUSTOM_USER_FLAG_OFFSET = BigInt(1) << BigInt(32); diff --git a/src/util/schemas/UsernameAttemptUnauthedSchema.ts b/src/util/schemas/UsernameAttemptUnauthedSchema.ts new file mode 100644 index 00000000..0ac83dd0 --- /dev/null +++ b/src/util/schemas/UsernameAttemptUnauthedSchema.ts @@ -0,0 +1,3 @@ +export interface UsernameAttemptUnauthedSchema { + username: string; +} diff --git a/src/util/schemas/index.ts b/src/util/schemas/index.ts index 44a504cd..bb449e45 100644 --- a/src/util/schemas/index.ts +++ b/src/util/schemas/index.ts @@ -72,6 +72,7 @@ export * from "./UserModifySchema"; export * from "./UserNoteUpdateSchema"; export * from "./UserProfileModifySchema"; export * from "./UserSettingsSchema"; +export * from "./UsernameAttemptUnauthedSchema"; export * from "./Validator"; export * from "./VanityUrlSchema"; export * from "./VoiceIdentifySchema"; diff --git a/src/util/schemas/responses/UsernameAttemptResponse.ts b/src/util/schemas/responses/UsernameAttemptResponse.ts new file mode 100644 index 00000000..864a3bb0 --- /dev/null +++ b/src/util/schemas/responses/UsernameAttemptResponse.ts @@ -0,0 +1,3 @@ +export interface UsernameAttemptResponse { + taken: boolean; +} |