summary refs log tree commit diff
path: root/assets
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2023-02-24 23:17:36 +1100
committerGitHub <noreply@github.com>2023-02-24 23:17:36 +1100
commit224e2c8374eee1bf85f6798123da4df90daf1860 (patch)
tree3d698d6b7392a061ff04d0dad145200377ed7fad /assets
parentFix gateway encoding Date objects as {} when using erlpack. Fixes NaN/NaN/NaN... (diff)
parentmove transporters to their own files (diff)
downloadserver-ts-224e2c8374eee1bf85f6798123da4df90daf1860.tar.xz
Merge pull request #965 from Puyodead1/dev/mail
Email Support
Diffstat (limited to 'assets')
-rw-r--r--assets/client_test/verify.html58
-rw-r--r--assets/email_templates/new_login_location.html113
-rw-r--r--assets/email_templates/password_changed.html65
-rw-r--r--assets/email_templates/password_reset_request.html101
-rw-r--r--assets/email_templates/phone_removed.html69
-rw-r--r--assets/email_templates/verify_email.html102
-rw-r--r--assets/locales/en/auth.json4
-rw-r--r--assets/schemas.json2083
8 files changed, 2459 insertions, 136 deletions
diff --git a/assets/client_test/verify.html b/assets/client_test/verify.html
new file mode 100644

index 00000000..0de6fc6b --- /dev/null +++ b/assets/client_test/verify.html
@@ -0,0 +1,58 @@ +<!DOCTYPE html> +<html class="theme-dark" data-theme="dark"> + +<head> + <meta charset="utf-8" /> + <meta content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no" name="viewport" /> + + <link rel="stylesheet" href="/assets/40532.bb53efb11e3ed4046082.css" integrity="" /> + <link rel="icon" href="/assets/847541504914fd33810e70a0ea73177e.ico" /> + <title>Fosscord Test Client</title> + <meta charset="utf-8" data-react-helmet="true" /> +</head> + +<body> + <div id="app-mount"></div> + <script> + window.__OVERLAY__ = /overlay/.test(location.pathname); + window.__BILLING_STANDALONE__ = /^\/billing/.test(location.pathname); + window.GLOBAL_ENV = { + API_ENDPOINT: "/api", + API_VERSION: 9, + GATEWAY_ENDPOINT: `${location.protocol === "https:" ? "wss://" : "ws://"}${location.host}`, + WEBAPP_ENDPOINT: "", + CDN_HOST: `${location.hostname}`, + ASSET_ENDPOINT: "", + MEDIA_PROXY_ENDPOINT: "https://media.discordapp.net", + WIDGET_ENDPOINT: `//${location.host}/widget`, + INVITE_HOST: `${location.hostname}/invite`, + GUILD_TEMPLATE_HOST: "${location.host}/template", + GIFT_CODE_HOST: "${location.hostname}/gift", + RELEASE_CHANNEL: "canary", + MARKETING_ENDPOINT: "//discord.com", + BRAINTREE_KEY: "production_5st77rrc_49pp2rp4phym7387", + STRIPE_KEY: "pk_live_CUQtlpQUF0vufWpnpUmQvcdi", + NETWORKING_ENDPOINT: "//router.discordapp.net", + RTC_LATENCY_ENDPOINT: "//${location.hostname}/rtc", + ACTIVITY_APPLICATION_HOST: "discordsays.com", + PROJECT_ENV: "production", + REMOTE_AUTH_ENDPOINT: "//localhost:3020", + SENTRY_TAGS: { buildId: "d5b97e42230075cb9634c419c0cf4d2f8f9ada53", buildType: "normal" }, + MIGRATION_SOURCE_ORIGIN: "https://${location.hostname}", + MIGRATION_DESTINATION_ORIGIN: "https://${location.hostname}", + HTML_TIMESTAMP: Date.now(), + ALGOLIA_KEY: "aca0d7082e4e63af5ba5917d5e96bed0" + }; + window.localStorage.setItem("gatewayURL", window.GLOBAL_ENV.GATEWAY_ENDPOINT); + window.localStorage.setItem( + "DeveloperOptionsStore", + `{"trace":false,"canary":true,"logGatewayEvents":true,"logOverlayEvents":true,"logAnalyticsEvents":true,"sourceMapsEnabled":false,"axeEnabled":false}` + ); + </script> + <script src="/assets/33329b5e3fc4ba0db663.js"></script> + <script src="/assets/c31f5155b71da969ec04.js"></script> + <script src="/assets/bba695569f6557775f9c.js"></script> + <script src="/assets/867449841939756f0ab0.js"></script> +</body> + +</html> \ No newline at end of file diff --git a/assets/email_templates/new_login_location.html b/assets/email_templates/new_login_location.html new file mode 100644
index 00000000..ff262e99 --- /dev/null +++ b/assets/email_templates/new_login_location.html
@@ -0,0 +1,113 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="Content-Type" content="text/html charset=UTF-8" /> + <title>Verify {instanceName} Login from New Location</title> + + <style> + * { + font-size: 16px; + line-height: 24px; + font-family: Arial, Helvetica, sans-serif; + } + p { + color: white; + } + .ExternalClass { + width: 100%; + } + </style> + </head> + <body> + <div style="background-color: #202225;"> + <img + src="https://raw.githubusercontent.com/fosscord/fosscord/master/assets-rebrand/svg/Fosscord-Wordmark-Orange.svg" + alt="Branding" + style=" + width: 100%; + max-width: 200px; + margin: 0 auto; + display: block; + padding: 20px; + " + /> + <div + style=" + width: 100%; + max-width: 500px; + margin: 0 auto; + padding: 40px 50px; + background-color: #32353b; + border-radius: 5px; + " + > + <p + style=" + font-weight: 600; + font-size: 20px; + letter-spacing: 0.27px; + line-height: 24px; + " + > + Hey {userUsername}, + </p> + <p> + It looks like someone tried to log into your {instanceName} + account from a new location. If this is you, follow the link + below to authorize logging in from this location on your + account. If this isn't you, we suggest changing your + password as soon as possible. + </p> + <p> + <strong>IP Address:</strong> {ipAddress} + <br /> + <strong>Location:</strong> {locationCity}, {locationRegion}, + {locationCountryName} + </p> + <div> + <div + style=" + text-align: center; + justify-content: center; + padding-bottom: 10px; + " + > + <a + href="{verifyUrl}" + target="_blank" + style=" + font-size: 15px; + border: none; + border-radius: 3px; + text-decoration: none; + color: white; + cursor: pointer; + padding: 15px 19px; + background-color: #ff5f00; + border-radius: 5px; + " + >Verify Login</a + > + </div> + <hr /> + <div + style=" + text-align: center; + justify-content: center; + padding-bottom: 10px; + " + > + <p> + Alternatively, you can directly paste this link into + your browser: + </p> + <a href="{verifyUrl}" target="_blank" style="word-wrap: break-word;">{verifyUrl}</a> + </div> + </div> + </div> + </div> + </body> +</html> diff --git a/assets/email_templates/password_changed.html b/assets/email_templates/password_changed.html new file mode 100644
index 00000000..399108a2 --- /dev/null +++ b/assets/email_templates/password_changed.html
@@ -0,0 +1,65 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="Content-Type" content="text/html charset=UTF-8" /> + <title>{instanceName} Password Changed</title> + + <style> + * { + font-size: 16px; + line-height: 24px; + font-family: Arial, Helvetica, sans-serif; + } + p { + color: white; + } + .ExternalClass { + width: 100%; + } + </style> + </head> + <body> + <div style="background-color: #202225;"> + <img + src="https://raw.githubusercontent.com/fosscord/fosscord/master/assets-rebrand/svg/Fosscord-Wordmark-Orange.svg" + alt="Branding" + style=" + width: 100%; + max-width: 200px; + margin: 0 auto; + display: block; + padding: 20px; + " + /> + <div + style=" + width: 100%; + max-width: 500px; + margin: 0 auto; + padding: 40px 50px; + background-color: #32353b; + border-radius: 5px; + " + > + <p + style=" + font-weight: 600; + font-size: 20px; + letter-spacing: 0.27px; + line-height: 24px; + " + > + Hey {userUsername}, + </p> + <p>Your {instanceName} password has been changed.</p> + <p> + If this wasn't done by you, please immediately reset the + password to your {instanceName} account. + </p> + </div> + </div> + </body> +</html> diff --git a/assets/email_templates/password_reset_request.html b/assets/email_templates/password_reset_request.html new file mode 100644
index 00000000..b770e7ba --- /dev/null +++ b/assets/email_templates/password_reset_request.html
@@ -0,0 +1,101 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="Content-Type" content="text/html charset=UTF-8" /> + <title>Password Reset Request for {instanceName}</title> + + <style> + * { + font-size: 16px; + line-height: 24px; + font-family: Arial, Helvetica, sans-serif; + } + p { + color: white; + } + .ExternalClass { + width: 100%; + } + </style> + </head> + <body> + <div style="background-color: #202225;"> + <img + src="https://raw.githubusercontent.com/fosscord/fosscord/master/assets-rebrand/svg/Fosscord-Wordmark-Orange.svg" + alt="Branding" + style=" + width: 100%; + max-width: 200px; + margin: 0 auto; + display: block; + padding: 20px; + " + /> + <div + style=" + width: 100%; + max-width: 500px; + margin: 0 auto; + padding: 40px 50px; + background-color: #32353b; + border-radius: 5px; + " + > + <p + style=" + font-weight: 600; + font-size: 20px; + letter-spacing: 0.27px; + line-height: 24px; + " + > + Hey {userUsername}, + </p> + <p> + Your {instanceName} password can be reset by clicking the + button below. If you did not request a new password, please + ignore this email. + </p> + <div> + <div + style=" + text-align: center; + justify-content: center; + padding-bottom: 10px; + " + > + <a + href="{passwordResetUrl}" + target="_blank" + style=" + font-size: 15px; + border: none; + border-radius: 3px; + text-decoration: none; + color: white; + cursor: pointer; + padding: 15px 19px; + background-color: #ff5f00; + border-radius: 5px; + " + >Reset Password</a + > + </div> + <hr /> + <div style="text-align: center"> + <p> + Alternatively, you can directly paste this link into + your browser: + </p> + <a href="{passwordResetUrl}" target="_blank" style="word-wrap: break-word;" + >{passwordResetUrl}</a + > + </div> + </div> + </div> + </div> + </body> +</html> diff --git a/assets/email_templates/phone_removed.html b/assets/email_templates/phone_removed.html new file mode 100644
index 00000000..65807e29 --- /dev/null +++ b/assets/email_templates/phone_removed.html
@@ -0,0 +1,69 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="Content-Type" content="text/html charset=UTF-8" /> + <title>Phone Removed From {instanceName} Account</title> + + <style> + * { + font-size: 16px; + line-height: 24px; + font-family: Arial, Helvetica, sans-serif; + } + p { + color: white; + } + .ExternalClass { + width: 100%; + } + </style> + </head> + <body> + <div style="background-color: #202225;"> + <img + src="https://raw.githubusercontent.com/fosscord/fosscord/master/assets-rebrand/svg/Fosscord-Wordmark-Orange.svg" + alt="Branding" + style=" + width: 100%; + max-width: 200px; + margin: 0 auto; + display: block; + padding: 20px; + " + /> + <div + style=" + width: 100%; + max-width: 500px; + margin: 0 auto; + padding: 40px 50px; + background-color: #32353b; + border-radius: 5px; + " + > + <p + style=" + font-weight: 600; + font-size: 20px; + letter-spacing: 0.27px; + line-height: 24px; + " + > + Hey {userUsername}, + </p> + <p> + Your phone number ********{phoneNumber} was recently removed + from this account and added to a different {instanceName} + account. + </p> + <p> + Please note that your phone number can only be linked to one + {instanceName} account at a time. + </p> + </div> + </div> + </body> +</html> diff --git a/assets/email_templates/verify_email.html b/assets/email_templates/verify_email.html new file mode 100644
index 00000000..481a46d4 --- /dev/null +++ b/assets/email_templates/verify_email.html
@@ -0,0 +1,102 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=edge" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="Content-Type" content="text/html charset=UTF-8" /> + <title>Verify Email Address for {instanceName}</title> + + <style> + * { + font-size: 16px; + line-height: 24px; + font-family: Arial, Helvetica, sans-serif; + } + p { + color: white; + } + .ExternalClass { + width: 100%; + } + </style> + </head> + <body> + <div style="background-color: #202225;"> + <img + src="https://raw.githubusercontent.com/fosscord/fosscord/master/assets-rebrand/svg/Fosscord-Wordmark-Orange.svg" + alt="Branding" + style=" + width: 100%; + max-width: 200px; + margin: 0 auto; + display: block; + padding: 20px; + " + /> + <div + style=" + width: 100%; + max-width: 500px; + margin: 0 auto; + padding: 40px 50px; + background-color: #32353b; + border-radius: 5px; + " + > + <p + style=" + font-weight: 600; + font-size: 20px; + letter-spacing: 0.27px; + line-height: 24px; + " + > + Hey {userUsername}, + </p> + <p> + Thanks for registering for an account on {instanceName}! + Before we get started, we just need to confirm that this is + you. Click below to verify your email address: + </p> + <div> + <div + style=" + text-align: center; + justify-content: center; + padding-bottom: 10px; + " + > + <a + class="btn" + href="{emailVerificationUrl}" + target="_blank" + style=" + font-size: 15px; + border: none; + border-radius: 3px; + text-decoration: none; + color: white; + cursor: pointer; + padding: 15px 19px; + background-color: #ff5f00; + border-radius: 5px; + " + >Verify Email</a + > + </div> + <hr /> + <div style="text-align: center"> + <p> + Alternatively, you can directly paste this link into + your browser: + </p> + <a href="{emailVerificationUrl}" target="_blank" style="word-wrap: break-word;" + >{emailVerificationUrl}</a + > + </div> + </div> + </div> + </div> + </body> +</html> diff --git a/assets/locales/en/auth.json b/assets/locales/en/auth.json
index 2178548e..0521a902 100644 --- a/assets/locales/en/auth.json +++ b/assets/locales/en/auth.json
@@ -16,5 +16,9 @@ "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" + }, + "password_reset": { + "EMAIL_DOES_NOT_EXIST": "Email does not exist.", + "INVALID_TOKEN": "Invalid token." } } diff --git a/assets/schemas.json b/assets/schemas.json
index 1c221cab..1fdfa361 100644 --- a/assets/schemas.json +++ b/assets/schemas.json
@@ -36,6 +36,34 @@ ], "$schema": "http://json-schema.org/draft-07/schema#" }, + "SMTPConnection.CustomAuthenticationResponse": { + "type": "object", + "properties": { + "command": { + "type": "string" + }, + "response": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "text": { + "type": "string" + }, + "code": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "command", + "response", + "status", + "text" + ], + "$schema": "http://json-schema.org/draft-07/schema#" + }, "TransportMakeRequestResponse": { "type": "object", "properties": { @@ -4556,6 +4584,599 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, + "ForgotPasswordSchema": { + "type": "object", + "properties": { + "login": { + "type": "string" + }, + "captcha_key": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "login" + ], + "definitions": { + "ChannelPermissionOverwriteType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "number" + }, + "ChannelModifySchema": { + "type": "object", + "properties": { + "name": { + "maxLength": 100, + "type": "string" + }, + "type": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 2, + 255, + 3, + 33, + 34, + 35, + 4, + 5, + 6, + 64, + 7, + 8, + 9 + ], + "type": "number" + }, + "topic": { + "type": "string" + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "bitrate": { + "type": "integer" + }, + "user_limit": { + "type": "integer" + }, + "rate_limit_per_user": { + "type": "integer" + }, + "position": { + "type": "integer" + }, + "permission_overwrites": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelPermissionOverwriteType" + }, + "allow": { + "type": "string" + }, + "deny": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "allow", + "deny", + "id", + "type" + ] + } + }, + "parent_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "rtc_region": { + "type": "string" + }, + "default_auto_archive_duration": { + "type": "integer" + }, + "default_reaction_emoji": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "integer" + }, + "default_thread_rate_limit_per_user": { + "type": "integer" + }, + "video_quality_mode": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "ActivitySchema": { + "type": "object", + "properties": { + "afk": { + "type": "boolean" + }, + "status": { + "$ref": "#/definitions/Status" + }, + "activities": { + "type": "array", + "items": { + "$ref": "#/definitions/Activity" + } + }, + "since": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "status" + ] + }, + "Status": { + "enum": [ + "dnd", + "idle", + "invisible", + "offline", + "online" + ], + "type": "string" + }, + "Activity": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ActivityType" + }, + "url": { + "type": "string" + }, + "created_at": { + "type": "integer" + }, + "timestamps": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "end": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "end", + "start" + ] + }, + "application_id": { + "type": "string" + }, + "details": { + "type": "string" + }, + "state": { + "type": "string" + }, + "emoji": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "animated": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "animated", + "name" + ] + }, + "party": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "size": { + "type": "array", + "items": [ + { + "type": "integer" + } + ], + "minItems": 1, + "maxItems": 1 + } + }, + "additionalProperties": false + }, + "assets": { + "type": "object", + "properties": { + "large_image": { + "type": "string" + }, + "large_text": { + "type": "string" + }, + "small_image": { + "type": "string" + }, + "small_text": { + "type": "string" + } + }, + "additionalProperties": false + }, + "secrets": { + "type": "object", + "properties": { + "join": { + "type": "string" + }, + "spectate": { + "type": "string" + }, + "match": { + "type": "string" + } + }, + "additionalProperties": false + }, + "instance": { + "type": "boolean" + }, + "flags": { + "type": "string" + }, + "id": { + "type": "string" + }, + "sync_id": { + "type": "string" + }, + "metadata": { + "type": "object", + "properties": { + "context_uri": { + "type": "string" + }, + "album_id": { + "type": "string" + }, + "artist_ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "album_id", + "artist_ids" + ] + }, + "session_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "flags", + "name", + "session_id", + "type" + ] + }, + "ActivityType": { + "enum": [ + 0, + 1, + 2, + 4, + 5 + ], + "type": "number" + }, + "Record<string,[number,number][]>": { + "type": "object", + "additionalProperties": false + }, + "Embed": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "type": { + "enum": [ + "article", + "gifv", + "image", + "link", + "rich", + "video" + ], + "type": "string" + }, + "description": { + "type": "string" + }, + "url": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "color": { + "type": "integer" + }, + "footer": { + "type": "object", + "properties": { + "text": { + "type": "string" + }, + "icon_url": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "text" + ] + }, + "image": { + "$ref": "#/definitions/EmbedImage" + }, + "thumbnail": { + "$ref": "#/definitions/EmbedImage" + }, + "video": { + "$ref": "#/definitions/EmbedImage" + }, + "provider": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "author": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "icon_url": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "fields": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + }, + "inline": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "name", + "value" + ] + } + } + }, + "additionalProperties": false + }, + "EmbedImage": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "proxy_url": { + "type": "string" + }, + "height": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "Partial<ChannelOverride>": { + "type": "object", + "properties": { + "message_notifications": { + "type": "integer" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + }, + "channel_id": { + "type": [ + "null", + "string" + ] + } + }, + "additionalProperties": false + }, + "MuteConfig": { + "type": "object", + "properties": { + "end_time": { + "type": "integer" + }, + "selected_time_window": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "end_time", + "selected_time_window" + ] + }, + "CustomStatus": { + "type": "object", + "properties": { + "emoji_id": { + "type": "string" + }, + "emoji_name": { + "type": "string" + }, + "expires_at": { + "type": "integer" + }, + "text": { + "type": "string" + } + }, + "additionalProperties": false + }, + "FriendSourceFlags": { + "type": "object", + "properties": { + "all": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "all" + ] + }, + "GuildFolder": { + "type": "object", + "properties": { + "color": { + "type": "integer" + }, + "guild_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "color", + "guild_ids", + "id", + "name" + ] + }, + "Partial<GenerateWebAuthnCredentialsSchema>": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Partial<CreateWebAuthnCredentialSchema>": { + "type": "object", + "properties": { + "credential": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ticket": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" + }, "GuildCreateSchema": { "type": "object", "properties": { @@ -12127,6 +12748,704 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, + "MessageEditSchema": { + "type": "object", + "properties": { + "file": { + "type": "object", + "properties": { + "filename": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "filename" + ] + }, + "embed": { + "$ref": "#/definitions/Embed" + }, + "flags": { + "type": "string" + }, + "content": { + "type": "string" + }, + "nonce": { + "type": "string" + }, + "channel_id": { + "type": "string" + }, + "tts": { + "type": "boolean" + }, + "embeds": { + "type": "array", + "items": { + "$ref": "#/definitions/Embed" + } + }, + "allowed_mentions": { + "type": "object", + "properties": { + "parse": { + "type": "array", + "items": { + "type": "string" + } + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "users": { + "type": "array", + "items": { + "type": "string" + } + }, + "replied_user": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "message_reference": { + "type": "object", + "properties": { + "message_id": { + "type": "string" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "fail_if_not_exists": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "channel_id", + "message_id" + ] + }, + "payload_json": { + "type": "string" + }, + "attachments": { + "description": "TODO: we should create an interface for attachments\nTODO: OpenWAAO<-->attachment-style metadata conversion", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "filename": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "filename", + "id" + ] + } + }, + "sticker_ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "definitions": { + "ChannelPermissionOverwriteType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "number" + }, + "ChannelModifySchema": { + "type": "object", + "properties": { + "name": { + "maxLength": 100, + "type": "string" + }, + "type": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 2, + 255, + 3, + 33, + 34, + 35, + 4, + 5, + 6, + 64, + 7, + 8, + 9 + ], + "type": "number" + }, + "topic": { + "type": "string" + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "bitrate": { + "type": "integer" + }, + "user_limit": { + "type": "integer" + }, + "rate_limit_per_user": { + "type": "integer" + }, + "position": { + "type": "integer" + }, + "permission_overwrites": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelPermissionOverwriteType" + }, + "allow": { + "type": "string" + }, + "deny": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "allow", + "deny", + "id", + "type" + ] + } + }, + "parent_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "rtc_region": { + "type": "string" + }, + "default_auto_archive_duration": { + "type": "integer" + }, + "default_reaction_emoji": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "integer" + }, + "default_thread_rate_limit_per_user": { + "type": "integer" + }, + "video_quality_mode": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "ActivitySchema": { + "type": "object", + "properties": { + "afk": { + "type": "boolean" + }, + "status": { + "$ref": "#/definitions/Status" + }, + "activities": { + "type": "array", + "items": { + "$ref": "#/definitions/Activity" + } + }, + "since": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "status" + ] + }, + "Status": { + "enum": [ + "dnd", + "idle", + "invisible", + "offline", + "online" + ], + "type": "string" + }, + "Activity": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ActivityType" + }, + "url": { + "type": "string" + }, + "created_at": { + "type": "integer" + }, + "timestamps": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "end": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "end", + "start" + ] + }, + "application_id": { + "type": "string" + }, + "details": { + "type": "string" + }, + "state": { + "type": "string" + }, + "emoji": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "animated": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "animated", + "name" + ] + }, + "party": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "size": { + "type": "array", + "items": [ + { + "type": "integer" + } + ], + "minItems": 1, + "maxItems": 1 + } + }, + "additionalProperties": false + }, + "assets": { + "type": "object", + "properties": { + "large_image": { + "type": "string" + }, + "large_text": { + "type": "string" + }, + "small_image": { + "type": "string" + }, + "small_text": { + "type": "string" + } + }, + "additionalProperties": false + }, + "secrets": { + "type": "object", + "properties": { + "join": { + "type": "string" + }, + "spectate": { + "type": "string" + }, + "match": { + "type": "string" + } + }, + "additionalProperties": false + }, + "instance": { + "type": "boolean" + }, + "flags": { + "type": "string" + }, + "id": { + "type": "string" + }, + "sync_id": { + "type": "string" + }, + "metadata": { + "type": "object", + "properties": { + "context_uri": { + "type": "string" + }, + "album_id": { + "type": "string" + }, + "artist_ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "album_id", + "artist_ids" + ] + }, + "session_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "flags", + "name", + "session_id", + "type" + ] + }, + "ActivityType": { + "enum": [ + 0, + 1, + 2, + 4, + 5 + ], + "type": "number" + }, + "Record<string,[number,number][]>": { + "type": "object", + "additionalProperties": false + }, + "Embed": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "type": { + "enum": [ + "article", + "gifv", + "image", + "link", + "rich", + "video" + ], + "type": "string" + }, + "description": { + "type": "string" + }, + "url": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "color": { + "type": "integer" + }, + "footer": { + "type": "object", + "properties": { + "text": { + "type": "string" + }, + "icon_url": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "text" + ] + }, + "image": { + "$ref": "#/definitions/EmbedImage" + }, + "thumbnail": { + "$ref": "#/definitions/EmbedImage" + }, + "video": { + "$ref": "#/definitions/EmbedImage" + }, + "provider": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "author": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "icon_url": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "fields": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + }, + "inline": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "name", + "value" + ] + } + } + }, + "additionalProperties": false + }, + "EmbedImage": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "proxy_url": { + "type": "string" + }, + "height": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "Partial<ChannelOverride>": { + "type": "object", + "properties": { + "message_notifications": { + "type": "integer" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + }, + "channel_id": { + "type": [ + "null", + "string" + ] + } + }, + "additionalProperties": false + }, + "MuteConfig": { + "type": "object", + "properties": { + "end_time": { + "type": "integer" + }, + "selected_time_window": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "end_time", + "selected_time_window" + ] + }, + "CustomStatus": { + "type": "object", + "properties": { + "emoji_id": { + "type": "string" + }, + "emoji_name": { + "type": "string" + }, + "expires_at": { + "type": "integer" + }, + "text": { + "type": "string" + } + }, + "additionalProperties": false + }, + "FriendSourceFlags": { + "type": "object", + "properties": { + "all": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "all" + ] + }, + "GuildFolder": { + "type": "object", + "properties": { + "color": { + "type": "integer" + }, + "guild_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "color", + "guild_ids", + "id", + "name" + ] + }, + "Partial<GenerateWebAuthnCredentialsSchema>": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Partial<CreateWebAuthnCredentialSchema>": { + "type": "object", + "properties": { + "credential": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ticket": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" + }, "MfaCodesSchema": { "type": "object", "properties": { @@ -13321,6 +14640,600 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, + "PasswordResetSchema": { + "type": "object", + "properties": { + "password": { + "type": "string" + }, + "token": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "password", + "token" + ], + "definitions": { + "ChannelPermissionOverwriteType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "number" + }, + "ChannelModifySchema": { + "type": "object", + "properties": { + "name": { + "maxLength": 100, + "type": "string" + }, + "type": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 2, + 255, + 3, + 33, + 34, + 35, + 4, + 5, + 6, + 64, + 7, + 8, + 9 + ], + "type": "number" + }, + "topic": { + "type": "string" + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "bitrate": { + "type": "integer" + }, + "user_limit": { + "type": "integer" + }, + "rate_limit_per_user": { + "type": "integer" + }, + "position": { + "type": "integer" + }, + "permission_overwrites": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelPermissionOverwriteType" + }, + "allow": { + "type": "string" + }, + "deny": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "allow", + "deny", + "id", + "type" + ] + } + }, + "parent_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "rtc_region": { + "type": "string" + }, + "default_auto_archive_duration": { + "type": "integer" + }, + "default_reaction_emoji": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "integer" + }, + "default_thread_rate_limit_per_user": { + "type": "integer" + }, + "video_quality_mode": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "ActivitySchema": { + "type": "object", + "properties": { + "afk": { + "type": "boolean" + }, + "status": { + "$ref": "#/definitions/Status" + }, + "activities": { + "type": "array", + "items": { + "$ref": "#/definitions/Activity" + } + }, + "since": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "status" + ] + }, + "Status": { + "enum": [ + "dnd", + "idle", + "invisible", + "offline", + "online" + ], + "type": "string" + }, + "Activity": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ActivityType" + }, + "url": { + "type": "string" + }, + "created_at": { + "type": "integer" + }, + "timestamps": { + "type": "object", + "properties": { + "start": { + "type": "integer" + }, + "end": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "end", + "start" + ] + }, + "application_id": { + "type": "string" + }, + "details": { + "type": "string" + }, + "state": { + "type": "string" + }, + "emoji": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "animated": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "animated", + "name" + ] + }, + "party": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "size": { + "type": "array", + "items": [ + { + "type": "integer" + } + ], + "minItems": 1, + "maxItems": 1 + } + }, + "additionalProperties": false + }, + "assets": { + "type": "object", + "properties": { + "large_image": { + "type": "string" + }, + "large_text": { + "type": "string" + }, + "small_image": { + "type": "string" + }, + "small_text": { + "type": "string" + } + }, + "additionalProperties": false + }, + "secrets": { + "type": "object", + "properties": { + "join": { + "type": "string" + }, + "spectate": { + "type": "string" + }, + "match": { + "type": "string" + } + }, + "additionalProperties": false + }, + "instance": { + "type": "boolean" + }, + "flags": { + "type": "string" + }, + "id": { + "type": "string" + }, + "sync_id": { + "type": "string" + }, + "metadata": { + "type": "object", + "properties": { + "context_uri": { + "type": "string" + }, + "album_id": { + "type": "string" + }, + "artist_ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "album_id", + "artist_ids" + ] + }, + "session_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "flags", + "name", + "session_id", + "type" + ] + }, + "ActivityType": { + "enum": [ + 0, + 1, + 2, + 4, + 5 + ], + "type": "number" + }, + "Record<string,[number,number][]>": { + "type": "object", + "additionalProperties": false + }, + "Embed": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "type": { + "enum": [ + "article", + "gifv", + "image", + "link", + "rich", + "video" + ], + "type": "string" + }, + "description": { + "type": "string" + }, + "url": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "color": { + "type": "integer" + }, + "footer": { + "type": "object", + "properties": { + "text": { + "type": "string" + }, + "icon_url": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "text" + ] + }, + "image": { + "$ref": "#/definitions/EmbedImage" + }, + "thumbnail": { + "$ref": "#/definitions/EmbedImage" + }, + "video": { + "$ref": "#/definitions/EmbedImage" + }, + "provider": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "author": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + }, + "icon_url": { + "type": "string" + }, + "proxy_icon_url": { + "type": "string" + } + }, + "additionalProperties": false + }, + "fields": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + }, + "inline": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "name", + "value" + ] + } + } + }, + "additionalProperties": false + }, + "EmbedImage": { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "proxy_url": { + "type": "string" + }, + "height": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "Partial<ChannelOverride>": { + "type": "object", + "properties": { + "message_notifications": { + "type": "integer" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + }, + "channel_id": { + "type": [ + "null", + "string" + ] + } + }, + "additionalProperties": false + }, + "MuteConfig": { + "type": "object", + "properties": { + "end_time": { + "type": "integer" + }, + "selected_time_window": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "end_time", + "selected_time_window" + ] + }, + "CustomStatus": { + "type": "object", + "properties": { + "emoji_id": { + "type": "string" + }, + "emoji_name": { + "type": "string" + }, + "expires_at": { + "type": "integer" + }, + "text": { + "type": "string" + } + }, + "additionalProperties": false + }, + "FriendSourceFlags": { + "type": "object", + "properties": { + "all": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "all" + ] + }, + "GuildFolder": { + "type": "object", + "properties": { + "color": { + "type": "integer" + }, + "guild_ids": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "integer" + }, + "name": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "color", + "guild_ids", + "id", + "name" + ] + }, + "Partial<GenerateWebAuthnCredentialsSchema>": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Partial<CreateWebAuthnCredentialSchema>": { + "type": "object", + "properties": { + "credential": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ticket": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" + }, "PurgeSchema": { "type": "object", "properties": { @@ -29808,125 +31721,8 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "MessageEditSchema": { - "type": "object", - "properties": { - "file": { - "type": "object", - "properties": { - "filename": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "filename" - ] - }, - "embed": { - "$ref": "#/definitions/Embed" - }, - "flags": { - "type": "string" - }, - "content": { - "type": "string" - }, - "nonce": { - "type": "string" - }, - "channel_id": { - "type": "string" - }, - "tts": { - "type": "boolean" - }, - "embeds": { - "type": "array", - "items": { - "$ref": "#/definitions/Embed" - } - }, - "allowed_mentions": { - "type": "object", - "properties": { - "parse": { - "type": "array", - "items": { - "type": "string" - } - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "users": { - "type": "array", - "items": { - "type": "string" - } - }, - "replied_user": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "message_reference": { - "type": "object", - "properties": { - "message_id": { - "type": "string" - }, - "channel_id": { - "type": "string" - }, - "guild_id": { - "type": "string" - }, - "fail_if_not_exists": { - "type": "boolean" - } - }, - "additionalProperties": false, - "required": [ - "channel_id", - "message_id" - ] - }, - "payload_json": { - "type": "string" - }, - "attachments": { - "description": "TODO: we should create an interface for attachments\nTODO: OpenWAAO<-->attachment-style metadata conversion", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "filename": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "filename", - "id" - ] - } - }, - "sticker_ids": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, + "ActivitySchema": { + "$ref": "#/definitions/ActivitySchema", "definitions": { "ChannelPermissionOverwriteType": { "enum": [ @@ -30506,8 +32302,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": [ @@ -31087,19 +32895,16 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "BulkDeleteSchema": { + "MemberNickChangeSchema": { "type": "object", "properties": { - "messages": { - "type": "array", - "items": { - "type": "string" - } + "nick": { + "type": "string" } }, "additionalProperties": false, "required": [ - "messages" + "nick" ], "definitions": { "ChannelPermissionOverwriteType": { @@ -31680,16 +33485,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": { @@ -32270,16 +34075,22 @@ }, "$schema": "http://json-schema.org/draft-07/schema#" }, - "PruneSchema": { + "VerifyEmailSchema": { "type": "object", "properties": { - "days": { - "type": "integer" + "captcha_key": { + "type": [ + "null", + "string" + ] + }, + "token": { + "type": "string" } }, "additionalProperties": false, "required": [ - "days" + "token" ], "definitions": { "ChannelPermissionOverwriteType": {