diff --git a/api/assets/checkLocale.js b/assets/checkLocale.js
index 016d66c8..016d66c8 100644
--- a/api/assets/checkLocale.js
+++ b/assets/checkLocale.js
diff --git a/assets/developers.html b/assets/developers.html
new file mode 100644
index 00000000..87595e77
--- /dev/null
+++ b/assets/developers.html
@@ -0,0 +1,44 @@
+<!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/532.03aaeef88460fae60534.css" integrity="" />
+ <link rel="icon" href="/assets/07dca80a102d4149e9736d4b162cff6f.ico" />
+ <title>Discord Test Client Developer Portal</title>
+ <meta charset="utf-8" data-react-helmet="true" />
+</head>
+
+<body>
+ <div id="app-mount"></div>
+ <script>
+ window.GLOBAL_ENV = {
+ API_VERSION: 9,
+ API_ENDPOINT: "/api",
+ WEBAPP_ENDPOINT: "",
+ CDN_HOST: `${location.hostname}:3003`,
+
+ BRAINTREE_KEY: "production_5st77rrc_49pp2rp4phym7387",
+ STRIPE_KEY: "pk_live_CUQtlpQUF0vufWpnpUmQvcdi",
+ MARKETING_ENDPOINT: "//discord.com",
+ RELEASE_CHANNEL: "stable",
+ ALGOLIA_KEY: "aca0d7082e4e63af5ba5917d5e96bed0"
+ };
+ GLOBAL_ENV.MEDIA_PROXY_ENDPOINT = location.protocol + "//" + GLOBAL_ENV.CDN_HOST;
+ const localStorage = window.localStorage;
+ // TODO: remote auth
+ // window.GLOBAL_ENV.REMOTE_AUTH_ENDPOINT = window.GLOBAL_ENV.GATEWAY_ENDPOINT.replace(/wss?:/, "");
+ localStorage.setItem("gatewayURL", window.GLOBAL_ENV.GATEWAY_ENDPOINT);
+ localStorage.setItem(
+ "DeveloperOptionsStore",
+ `{"trace":false,"canary":false,"logGatewayEvents":true,"logOverlayEvents":true,"logAnalyticsEvents":true,"sourceMapsEnabled":false,"axeEnabled":false}`
+ );
+ </script>
+ <script src="/assets/38f40c32d3c8a2fdf73b.js" integrity=""></script>
+ <script src="/assets/aa190934324e05fcc35c.js" integrity=""></script>
+ <script src="/assets/45664a0209e828a528b4.js" integrity=""></script>
+</body>
+
+</html>
\ No newline at end of file
diff --git a/api/assets/dff87c953f43b561d71fbcfe8a93a79a.png b/assets/dff87c953f43b561d71fbcfe8a93a79a.png
index e69de29b..e69de29b 100644
--- a/api/assets/dff87c953f43b561d71fbcfe8a93a79a.png
+++ b/assets/dff87c953f43b561d71fbcfe8a93a79a.png
diff --git a/api/assets/endpoints.json b/assets/endpoints.json
index 8b0514ce..8b0514ce 100644
--- a/api/assets/endpoints.json
+++ b/assets/endpoints.json
diff --git a/api/assets/features.json b/assets/features.json
index 05a858a0..05a858a0 100644
--- a/api/assets/features.json
+++ b/assets/features.json
diff --git a/api/assets/fosscord-login.css b/assets/fosscord-login.css
index d507c545..d507c545 100644
--- a/api/assets/fosscord-login.css
+++ b/assets/fosscord-login.css
diff --git a/api/assets/fosscord.css b/assets/fosscord.css
index 6078fdeb..6078fdeb 100644
--- a/api/assets/fosscord.css
+++ b/assets/fosscord.css
diff --git a/assets/index.html b/assets/index.html
new file mode 100644
index 00000000..64a2bdbf
--- /dev/null
+++ b/assets/index.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>Discord Test Client</title>
+ <link rel="stylesheet" href="/assets/fosscord.css" />
+ <link id="logincss" rel="stylesheet" href="/assets/fosscord-login.css" />
+ <link id="customcss" rel="stylesheet" href="/assets/user.css" />
+ <!-- inline plugin marker -->
+ <!-- preload plugin marker -->
+</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}:3003`,
+ ASSET_ENDPOINT: "",
+ MEDIA_PROXY_ENDPOINT: "https://media.discordapp.net",
+ WIDGET_ENDPOINT: `//${location.host}/widget`,
+ INVITE_HOST: `${location.hostname}/invite`,
+ GUILD_TEMPLATE_HOST: "${location.host}",
+ GIFT_CODE_HOST: "${location.hostname}",
+ RELEASE_CHANNEL: "stable",
+ 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: "75e36d9", buildType: "normal" },
+ MIGRATION_SOURCE_ORIGIN: "https://${location.hostname}",
+ MIGRATION_DESTINATION_ORIGIN: "https://${location.hostname}",
+ HTML_TIMESTAMP: Date.now(),
+ ALGOLIA_KEY: "aca0d7082e4e63af5ba5917d5e96bed0",
+ };
+ GLOBAL_ENV.MEDIA_PROXY_ENDPOINT = location.protocol + "//" + GLOBAL_ENV.CDN_HOST;
+ const localStorage = window.localStorage;
+ // TODO: remote auth
+ // window.GLOBAL_ENV.REMOTE_AUTH_ENDPOINT = window.GLOBAL_ENV.GATEWAY_ENDPOINT.replace(/wss?:/, "");
+ localStorage.setItem("gatewayURL", window.GLOBAL_ENV.GATEWAY_ENDPOINT);
+ localStorage.setItem(
+ "DeveloperOptionsStore",
+ `{"trace":false,"canary":false,"logGatewayEvents":true,"logOverlayEvents":true,"logAnalyticsEvents":true,"sourceMapsEnabled":false,"axeEnabled":false}`
+ );
+
+ setInterval(() => {
+ let token = JSON.parse(localStorage.getItem("token"));
+ if (token) {
+ let logincss = document.querySelector('#logincss'),
+ canRemove = logincss ? logincss : "";
+ if (canRemove !== "") {
+ document.querySelector("#logincss").remove();
+ canRemove = "";
+ }
+ }
+ }, 1000)
+
+ const settings = JSON.parse(localStorage.getItem("UserSettingsStore"));
+ if (settings && settings.locale.length <= 2) {
+ // fix client locale wrong and client not loading at all
+ settings.locale = "en-US";
+ localStorage.setItem("UserSettingsStore", JSON.stringify(settings));
+ }
+ </script>
+ <script src="/assets/checkLocale.js"></script>
+ <script src="/assets/2f2e0c25e45eb2f5a6f1.js"></script>
+ <script src="/assets/006e72c08a4c69cb66fc.js"></script>
+ <script src="/assets/2f94a3ba801087653a38.js"></script>
+ <script src="/assets/f7703f092bdbfc607cc7.js"></script>
+ <!-- plugin marker -->
+</body>
+
+</html>
\ No newline at end of file
diff --git a/api/assets/inline-plugins/autoRegister.js b/assets/inline-plugins/autoRegister.js
index bb0b903d..7bca39f8 100644
--- a/api/assets/inline-plugins/autoRegister.js
+++ b/assets/inline-plugins/autoRegister.js
@@ -44,7 +44,7 @@ function _generateName() {
return `${prefix.random()}${suffix.random()}`;
}
-var token = JSON.parse(localStorage.getItem("token"));
+let token = JSON.parse(localStorage.getItem("token"));
if (!token && location.pathname !== "/login" && location.pathname !== "/register") {
fetch(`${window.GLOBAL_ENV.API_ENDPOINT}/auth/register`, {
method: "POST",
diff --git a/api/assets/inline-plugins/fosscord-login.js b/assets/inline-plugins/fosscord-login.js
index 38f82200..9191dad4 100644
--- a/api/assets/inline-plugins/fosscord-login.js
+++ b/assets/inline-plugins/fosscord-login.js
@@ -6,7 +6,7 @@
// fosscord-login.css after login is successful, but not if you reload the page after logging in. This script is to remove fosscord-login.css in
// that specific case.
-var token = JSON.parse(localStorage.getItem("token"));
+let token = JSON.parse(localStorage.getItem("token"));
if (!token && location.pathname !== "/login" && location.pathname !== "/register") {
document.getElementById("logincss").remove();
}
diff --git a/api/locales/af/auth.json b/assets/locales/af/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/af/auth.json
+++ b/assets/locales/af/auth.json
diff --git a/api/locales/af/common.json b/assets/locales/af/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/af/common.json
+++ b/assets/locales/af/common.json
diff --git a/api/locales/ar/auth.json b/assets/locales/ar/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ar/auth.json
+++ b/assets/locales/ar/auth.json
diff --git a/api/locales/ar/common.json b/assets/locales/ar/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ar/common.json
+++ b/assets/locales/ar/common.json
diff --git a/api/locales/arn/auth.json b/assets/locales/arn/auth.json
index e19547a0..e19547a0 100644
--- a/api/locales/arn/auth.json
+++ b/assets/locales/arn/auth.json
diff --git a/api/locales/arn/common.json b/assets/locales/arn/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/arn/common.json
+++ b/assets/locales/arn/common.json
diff --git a/api/locales/az/auth.json b/assets/locales/az/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/az/auth.json
+++ b/assets/locales/az/auth.json
diff --git a/api/locales/az/common.json b/assets/locales/az/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/az/common.json
+++ b/assets/locales/az/common.json
diff --git a/assets/locales/be/auth.json b/assets/locales/be/auth.json
new file mode 100644
index 00000000..4bb36eeb
--- /dev/null
+++ b/assets/locales/be/auth.json
@@ -0,0 +1,18 @@
+{
+ "login": {
+ "INVALID_LOGIN": "Дадзены адрас электроннай пошты ці тэлефона не знойдзены",
+ "INVALID_PASSWORD": "Няправільны пароль",
+ "ACCOUNT_DISABLED": "Гэты ўліковы запіс адключаны",
+ "INVALID_TOTP_CODE": "Няправільны код двухфактарнай аўтэнтыфікацыі.",
+ "INVALID_TOTP_SECRET": "Няправільны сакрэтны код двухфактарнай аўтэнтыфікацыі."
+ },
+ "register": {
+ "REGISTRATION_DISABLED": "Рэгістрацыя новых карыстальнікаў адключана",
+ "INVITE_ONLY": "Вас павінны запрасіць, каб зарэгістравацца",
+ "EMAIL_INVALID": "Няправільны адрас электроннай пошты",
+ "EMAIL_ALREADY_REGISTERED": "Дадзены адрас электроннай пошты ўжо зарэгістраваны",
+ "DATE_OF_BIRTH_UNDERAGE": "Вам павінна быць не менш за {{years}} гадоў",
+ "CONSENT_REQUIRED": "Вы павінны пагадзіцца з Умовамі прадастаўлення паслуг і Палітыкай прыватнасці.",
+ "USERNAME_TOO_MANY_USERS": "Занадта шмат карыстальнікаў маюць гэтае імя карыстальніка, калі ласка, паспрабуйце іншае"
+ }
+}
diff --git a/api/locales/vi/common.json b/assets/locales/be/common.json
index 8bb9c042..09be0d40 100644
--- a/api/locales/vi/common.json
+++ b/assets/locales/be/common.json
@@ -1,9 +1,9 @@
{
"field": {
- "BASE_TYPE_REQUIRED": "This field is required",
- "BASE_TYPE_STRING": "This field must be a string",
- "BASE_TYPE_NUMBER": "This field must be a number",
- "BASE_TYPE_BIGINT": "This field must be a bigint",
+ "BASE_TYPE_REQUIRED": "Гэта поле з'яўляецца абавязковым",
+ "BASE_TYPE_STRING": "Гэта поле павінна быць радком",
+ "BASE_TYPE_NUMBER": "Гэта поле павінна быць лікам",
+ "BASE_TYPE_BIGINT": "Гэта поле павінна быць bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
diff --git a/api/locales/be/auth.json b/assets/locales/ber/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/be/auth.json
+++ b/assets/locales/ber/auth.json
diff --git a/api/locales/be/common.json b/assets/locales/ber/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/be/common.json
+++ b/assets/locales/ber/common.json
diff --git a/api/locales/ber/auth.json b/assets/locales/bg/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ber/auth.json
+++ b/assets/locales/bg/auth.json
diff --git a/api/locales/ber/common.json b/assets/locales/bg/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ber/common.json
+++ b/assets/locales/bg/common.json
diff --git a/api/locales/bg/auth.json b/assets/locales/bo/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/bg/auth.json
+++ b/assets/locales/bo/auth.json
diff --git a/api/locales/bg/common.json b/assets/locales/bo/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/bg/common.json
+++ b/assets/locales/bo/common.json
diff --git a/api/locales/bo/auth.json b/assets/locales/ca/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/bo/auth.json
+++ b/assets/locales/ca/auth.json
diff --git a/api/locales/bo/common.json b/assets/locales/ca/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/bo/common.json
+++ b/assets/locales/ca/common.json
diff --git a/api/locales/ca/auth.json b/assets/locales/cs/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ca/auth.json
+++ b/assets/locales/cs/auth.json
diff --git a/api/locales/ca/common.json b/assets/locales/cs/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ca/common.json
+++ b/assets/locales/cs/common.json
diff --git a/api/locales/cs/auth.json b/assets/locales/da/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/cs/auth.json
+++ b/assets/locales/da/auth.json
diff --git a/api/locales/cs/common.json b/assets/locales/da/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/cs/common.json
+++ b/assets/locales/da/common.json
diff --git a/assets/locales/de/auth.json b/assets/locales/de/auth.json
new file mode 100644
index 00000000..20e6daff
--- /dev/null
+++ b/assets/locales/de/auth.json
@@ -0,0 +1,18 @@
+{
+ "login": {
+ "INVALID_LOGIN": "E-Mail oder Telefonnummer nicht gefunden",
+ "INVALID_PASSWORD": "Ungültiges Passwort",
+ "ACCOUNT_DISABLED": "Dieses Konto ist deaktiviert",
+ "INVALID_TOTP_CODE": "Ungültiger Zwei-Faktor-Code.",
+ "INVALID_TOTP_SECRET": "Ungültiges Zwei-Faktor-Secret."
+ },
+ "register": {
+ "REGISTRATION_DISABLED": "Die Registrierung neuer Benutzer ist deaktiviert",
+ "INVITE_ONLY": "Du musst eingeladen werden, um dich zu registrieren",
+ "EMAIL_INVALID": "Ungültige E-Mail Adresse",
+ "EMAIL_ALREADY_REGISTERED": "Die E-Mail Adresse wird bereits verwendet",
+ "DATE_OF_BIRTH_UNDERAGE": "Du musst mindestens {{years}} Jahre alt sein",
+ "CONSENT_REQUIRED": "Du musst den Nutzungsbedingungen und den Datenschutzbestimmungen zustimmen.",
+ "USERNAME_TOO_MANY_USERS": "Dieser Name wird von zu vielen Nutzern verwendet, bitte wähle einen anderen"
+ }
+}
diff --git a/assets/locales/de/common.json b/assets/locales/de/common.json
new file mode 100644
index 00000000..97634a29
--- /dev/null
+++ b/assets/locales/de/common.json
@@ -0,0 +1,18 @@
+{
+ "field": {
+ "BASE_TYPE_REQUIRED": "Dieses Feld ist erforderlich",
+ "BASE_TYPE_STRING": "Dieses Feld muss ein String sein",
+ "BASE_TYPE_NUMBER": "Dieses Feld muss eine Zahl sein",
+ "BASE_TYPE_BIGINT": "Dieses Feld muss ein Bigint sein",
+ "BASE_TYPE_BOOLEAN": "Dieses Feld muss ein Boolean sein",
+ "BASE_TYPE_CHOICES": "Dieses Feld muss eines von ({{types}}) sein",
+ "BASE_TYPE_CLASS": "Dieses Feld muss eine Instanz von {{type}} sein",
+ "BASE_TYPE_OBJECT": "Dieses Feld muss ein Objekt sein",
+ "BASE_TYPE_ARRAY": "Dieses Feld muss ein Array sein",
+ "UNKOWN_FIELD": "Unbekanntes Feld: {{key}}",
+ "BASE_TYPE_CONSTANT": "Dieses Feld muss {{value}} sein",
+ "EMAIL_TYPE_INVALID_EMAIL": "Keine wohlgeformte E-Mail-Adresse",
+ "DATE_TYPE_PARSE": "Konnte {{date}} nicht verarbeiten. Es muss dem ISO8601 Standard entsprechen",
+ "BASE_TYPE_BAD_LENGTH": "Muss zwischen {{length}} lang sein"
+ }
+}
diff --git a/api/locales/da/auth.json b/assets/locales/el/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/da/auth.json
+++ b/assets/locales/el/auth.json
diff --git a/api/locales/da/common.json b/assets/locales/el/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/da/common.json
+++ b/assets/locales/el/common.json
diff --git a/api/locales/de/auth.json b/assets/locales/en/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/de/auth.json
+++ b/assets/locales/en/auth.json
diff --git a/api/locales/de/common.json b/assets/locales/en/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/de/common.json
+++ b/assets/locales/en/common.json
diff --git a/api/locales/el/auth.json b/assets/locales/eo/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/el/auth.json
+++ b/assets/locales/eo/auth.json
diff --git a/api/locales/el/common.json b/assets/locales/eo/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/el/common.json
+++ b/assets/locales/eo/common.json
diff --git a/api/locales/en/auth.json b/assets/locales/es/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/en/auth.json
+++ b/assets/locales/es/auth.json
diff --git a/api/locales/en/common.json b/assets/locales/es/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/en/common.json
+++ b/assets/locales/es/common.json
diff --git a/api/locales/eo/auth.json b/assets/locales/eu/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/eo/auth.json
+++ b/assets/locales/eu/auth.json
diff --git a/api/locales/eo/common.json b/assets/locales/eu/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/eo/common.json
+++ b/assets/locales/eu/common.json
diff --git a/api/locales/es/auth.json b/assets/locales/fa/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/es/auth.json
+++ b/assets/locales/fa/auth.json
diff --git a/api/locales/es/common.json b/assets/locales/fa/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/es/common.json
+++ b/assets/locales/fa/common.json
diff --git a/api/locales/eu/auth.json b/assets/locales/fi/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/eu/auth.json
+++ b/assets/locales/fi/auth.json
diff --git a/api/locales/eu/common.json b/assets/locales/fi/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/eu/common.json
+++ b/assets/locales/fi/common.json
diff --git a/api/locales/fa/auth.json b/assets/locales/fr/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/fa/auth.json
+++ b/assets/locales/fr/auth.json
diff --git a/api/locales/fa/common.json b/assets/locales/fr/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/fa/common.json
+++ b/assets/locales/fr/common.json
diff --git a/api/locales/fi/auth.json b/assets/locales/gn/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/fi/auth.json
+++ b/assets/locales/gn/auth.json
diff --git a/api/locales/fi/common.json b/assets/locales/gn/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/fi/common.json
+++ b/assets/locales/gn/common.json
diff --git a/api/locales/fr/auth.json b/assets/locales/ha/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/fr/auth.json
+++ b/assets/locales/ha/auth.json
diff --git a/api/locales/fr/common.json b/assets/locales/ha/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/fr/common.json
+++ b/assets/locales/ha/common.json
diff --git a/api/locales/gn/auth.json b/assets/locales/he/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/gn/auth.json
+++ b/assets/locales/he/auth.json
diff --git a/api/locales/he/common.json b/assets/locales/he/common.json
index 9e72e941..9e72e941 100644
--- a/api/locales/he/common.json
+++ b/assets/locales/he/common.json
diff --git a/api/locales/ha/auth.json b/assets/locales/hi/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ha/auth.json
+++ b/assets/locales/hi/auth.json
diff --git a/api/locales/gn/common.json b/assets/locales/hi/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/gn/common.json
+++ b/assets/locales/hi/common.json
diff --git a/api/locales/he/auth.json b/assets/locales/hr/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/he/auth.json
+++ b/assets/locales/hr/auth.json
diff --git a/api/locales/ha/common.json b/assets/locales/hr/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ha/common.json
+++ b/assets/locales/hr/common.json
diff --git a/api/locales/hi/auth.json b/assets/locales/hu/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/hi/auth.json
+++ b/assets/locales/hu/auth.json
diff --git a/api/locales/hi/common.json b/assets/locales/hu/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/hi/common.json
+++ b/assets/locales/hu/common.json
diff --git a/api/locales/hr/auth.json b/assets/locales/id/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/hr/auth.json
+++ b/assets/locales/id/auth.json
diff --git a/api/locales/hr/common.json b/assets/locales/id/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/hr/common.json
+++ b/assets/locales/id/common.json
diff --git a/api/locales/hu/auth.json b/assets/locales/it/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/hu/auth.json
+++ b/assets/locales/it/auth.json
diff --git a/api/locales/hu/common.json b/assets/locales/it/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/hu/common.json
+++ b/assets/locales/it/common.json
diff --git a/api/locales/id/auth.json b/assets/locales/ja/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/id/auth.json
+++ b/assets/locales/ja/auth.json
diff --git a/api/locales/id/common.json b/assets/locales/ja/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/id/common.json
+++ b/assets/locales/ja/common.json
diff --git a/api/locales/it/auth.json b/assets/locales/jv/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/it/auth.json
+++ b/assets/locales/jv/auth.json
diff --git a/api/locales/it/common.json b/assets/locales/jv/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/it/common.json
+++ b/assets/locales/jv/common.json
diff --git a/api/locales/ja/auth.json b/assets/locales/kk/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ja/auth.json
+++ b/assets/locales/kk/auth.json
diff --git a/api/locales/ja/common.json b/assets/locales/kk/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ja/common.json
+++ b/assets/locales/kk/common.json
diff --git a/api/locales/jv/auth.json b/assets/locales/ko/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/jv/auth.json
+++ b/assets/locales/ko/auth.json
diff --git a/api/locales/jv/common.json b/assets/locales/ko/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/jv/common.json
+++ b/assets/locales/ko/common.json
diff --git a/api/locales/kk/auth.json b/assets/locales/ku/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/kk/auth.json
+++ b/assets/locales/ku/auth.json
diff --git a/api/locales/kk/common.json b/assets/locales/ku/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/kk/common.json
+++ b/assets/locales/ku/common.json
diff --git a/api/locales/ko/auth.json b/assets/locales/la/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ko/auth.json
+++ b/assets/locales/la/auth.json
diff --git a/api/locales/ko/common.json b/assets/locales/la/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ko/common.json
+++ b/assets/locales/la/common.json
diff --git a/api/locales/ku/auth.json b/assets/locales/lt/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ku/auth.json
+++ b/assets/locales/lt/auth.json
diff --git a/api/locales/ku/common.json b/assets/locales/lt/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ku/common.json
+++ b/assets/locales/lt/common.json
diff --git a/api/locales/la/auth.json b/assets/locales/mi/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/la/auth.json
+++ b/assets/locales/mi/auth.json
diff --git a/api/locales/la/common.json b/assets/locales/mi/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/la/common.json
+++ b/assets/locales/mi/common.json
diff --git a/api/locales/lt/auth.json b/assets/locales/mn/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/lt/auth.json
+++ b/assets/locales/mn/auth.json
diff --git a/api/locales/lt/common.json b/assets/locales/mn/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/lt/common.json
+++ b/assets/locales/mn/common.json
diff --git a/api/locales/mi/auth.json b/assets/locales/mr/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/mi/auth.json
+++ b/assets/locales/mr/auth.json
diff --git a/api/locales/mi/common.json b/assets/locales/mr/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/mi/common.json
+++ b/assets/locales/mr/common.json
diff --git a/assets/locales/nl/auth.json b/assets/locales/nl/auth.json
new file mode 100644
index 00000000..ab295edd
--- /dev/null
+++ b/assets/locales/nl/auth.json
@@ -0,0 +1,18 @@
+{
+ "login": {
+ "INVALID_LOGIN": "E-mailadres of telefoon niet gevonden",
+ "INVALID_PASSWORD": "Ongeldig wachtwoord",
+ "ACCOUNT_DISABLED": "This account is disabled",
+ "INVALID_TOTP_CODE": "Invalid two-factor code.",
+ "INVALID_TOTP_SECRET": "Invalid two-factor secret."
+ },
+ "register": {
+ "REGISTRATION_DISABLED": "Registratie voor nieuwe gebruikers is uitgeschakeld",
+ "INVITE_ONLY": "U moet worden uitgenodigd om te registreren",
+ "EMAIL_INVALID": "Email is ongeldig",
+ "EMAIL_ALREADY_REGISTERED": "Dit e-mailadres is al geregistreerd",
+ "DATE_OF_BIRTH_UNDERAGE": "Je moet {{years}} jaar of ouder zijn",
+ "CONSENT_REQUIRED": "U moet akkoord gaan met de Algemene Voorwaarden en het Privacybeleid.",
+ "USERNAME_TOO_MANY_USERS": "Te veel gebruikers hebben deze gebruikersnaam, gelieve een andere te proberen"
+ }
+}
diff --git a/assets/locales/nl/common.json b/assets/locales/nl/common.json
new file mode 100644
index 00000000..6f411c02
--- /dev/null
+++ b/assets/locales/nl/common.json
@@ -0,0 +1,18 @@
+{
+ "field": {
+ "BASE_TYPE_REQUIRED": "Dit veld is verplicht",
+ "BASE_TYPE_STRING": "This field must be a string",
+ "BASE_TYPE_NUMBER": "Dit veld moet een getal zijn",
+ "BASE_TYPE_BIGINT": "This field must be a bigint",
+ "BASE_TYPE_BOOLEAN": "This field must be a boolean",
+ "BASE_TYPE_CHOICES": "Dit veld moet een van ({{types}}) zijn",
+ "BASE_TYPE_CLASS": "Dit veld moet een exemplaar zijn van {{type}}",
+ "BASE_TYPE_OBJECT": "Dit veld moet een object zijn",
+ "BASE_TYPE_ARRAY": "Dit veld moet een array zijn",
+ "UNKOWN_FIELD": "Unknown key: {{key}}",
+ "BASE_TYPE_CONSTANT": "Dit veld moet {{value}} zijn",
+ "EMAIL_TYPE_INVALID_EMAIL": "Niet een geldig e-mailadres",
+ "DATE_TYPE_PARSE": "Kan {{date}} niet parsen. Moet ISO8601 zijn",
+ "BASE_TYPE_BAD_LENGTH": "Moet tussen {{length}} in lengte zijn"
+ }
+}
diff --git a/api/locales/mn/auth.json b/assets/locales/nn/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/mn/auth.json
+++ b/assets/locales/nn/auth.json
diff --git a/api/locales/mn/common.json b/assets/locales/nn/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/mn/common.json
+++ b/assets/locales/nn/common.json
diff --git a/api/locales/mr/auth.json b/assets/locales/no/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/mr/auth.json
+++ b/assets/locales/no/auth.json
diff --git a/api/locales/mr/common.json b/assets/locales/no/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/mr/common.json
+++ b/assets/locales/no/common.json
diff --git a/api/locales/nl/auth.json b/assets/locales/pa/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/nl/auth.json
+++ b/assets/locales/pa/auth.json
diff --git a/api/locales/nl/common.json b/assets/locales/pa/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/nl/common.json
+++ b/assets/locales/pa/common.json
diff --git a/api/locales/pl/auth.json b/assets/locales/pl/auth.json
index ff17f237..ff17f237 100644
--- a/api/locales/pl/auth.json
+++ b/assets/locales/pl/auth.json
diff --git a/api/locales/pl/common.json b/assets/locales/pl/common.json
index 98c0906b..98c0906b 100644
--- a/api/locales/pl/common.json
+++ b/assets/locales/pl/common.json
diff --git a/api/locales/nn/auth.json b/assets/locales/pt/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/nn/auth.json
+++ b/assets/locales/pt/auth.json
diff --git a/api/locales/nn/common.json b/assets/locales/pt/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/nn/common.json
+++ b/assets/locales/pt/common.json
diff --git a/api/locales/no/auth.json b/assets/locales/qu/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/no/auth.json
+++ b/assets/locales/qu/auth.json
diff --git a/api/locales/no/common.json b/assets/locales/qu/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/no/common.json
+++ b/assets/locales/qu/common.json
diff --git a/api/locales/pa/auth.json b/assets/locales/ro/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/pa/auth.json
+++ b/assets/locales/ro/auth.json
diff --git a/api/locales/pa/common.json b/assets/locales/ro/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/pa/common.json
+++ b/assets/locales/ro/common.json
diff --git a/api/locales/ru/auth.json b/assets/locales/ru/auth.json
index be7ac845..7967e238 100644
--- a/api/locales/ru/auth.json
+++ b/assets/locales/ru/auth.json
@@ -3,8 +3,8 @@
"INVALID_LOGIN": "Данный адрес электронной почты или телефона не найден",
"INVALID_PASSWORD": "Неверный пароль",
"ACCOUNT_DISABLED": "Этот аккаунт отключён",
- "INVALID_TOTP_CODE": "Invalid two-factor code.",
- "INVALID_TOTP_SECRET": "Invalid two-factor secret."
+ "INVALID_TOTP_CODE": "Неверный код двухфакторной аутентификации.",
+ "INVALID_TOTP_SECRET": "Неверный секретный код двухфакторной аутентификации."
},
"register": {
"REGISTRATION_DISABLED": "Регистрация новых пользователей отключена",
diff --git a/assets/locales/ru/common.json b/assets/locales/ru/common.json
new file mode 100644
index 00000000..578aba05
--- /dev/null
+++ b/assets/locales/ru/common.json
@@ -0,0 +1,18 @@
+{
+ "field": {
+ "BASE_TYPE_REQUIRED": "Это поле является обязательным",
+ "BASE_TYPE_STRING": "Это поле должно быть строкой",
+ "BASE_TYPE_NUMBER": "Это поле должно быть числом",
+ "BASE_TYPE_BIGINT": "Это поле должно быть bigint",
+ "BASE_TYPE_BOOLEAN": "Это поле должно быть булевым значением",
+ "BASE_TYPE_CHOICES": "Это поле должно быть одним из ({{types}})",
+ "BASE_TYPE_CLASS": "Это поле должно быть экземпляром {{type}}",
+ "BASE_TYPE_OBJECT": "Это поле должно быть объектом",
+ "BASE_TYPE_ARRAY": "Это поле должно быть массивом",
+ "UNKOWN_FIELD": "Неизвестное поле: {{key}}",
+ "BASE_TYPE_CONSTANT": "Это поле должно быть {{value}}",
+ "EMAIL_TYPE_INVALID_EMAIL": "Неправильный формат адреса электронной почты",
+ "DATE_TYPE_PARSE": "Не удалось разобрать {{date}}. Дата должна быть в формате ISO8601",
+ "BASE_TYPE_BAD_LENGTH": "Длина должна быть между {{length}} в длину"
+ }
+}
diff --git a/api/locales/pt/auth.json b/assets/locales/sh/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/pt/auth.json
+++ b/assets/locales/sh/auth.json
diff --git a/api/locales/pt/common.json b/assets/locales/sh/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/pt/common.json
+++ b/assets/locales/sh/common.json
diff --git a/api/locales/qu/auth.json b/assets/locales/si/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/qu/auth.json
+++ b/assets/locales/si/auth.json
diff --git a/api/locales/qu/common.json b/assets/locales/si/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/qu/common.json
+++ b/assets/locales/si/common.json
diff --git a/api/locales/ro/auth.json b/assets/locales/sk/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ro/auth.json
+++ b/assets/locales/sk/auth.json
diff --git a/api/locales/ro/common.json b/assets/locales/sk/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ro/common.json
+++ b/assets/locales/sk/common.json
diff --git a/api/locales/sh/auth.json b/assets/locales/sr/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/sh/auth.json
+++ b/assets/locales/sr/auth.json
diff --git a/api/locales/sh/common.json b/assets/locales/sr/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/sh/common.json
+++ b/assets/locales/sr/common.json
diff --git a/api/locales/sv/auth.json b/assets/locales/sv/auth.json
index 573e685d..573e685d 100644
--- a/api/locales/sv/auth.json
+++ b/assets/locales/sv/auth.json
diff --git a/api/locales/sv/common.json b/assets/locales/sv/common.json
index 56c02a64..56c02a64 100644
--- a/api/locales/sv/common.json
+++ b/assets/locales/sv/common.json
diff --git a/api/locales/si/auth.json b/assets/locales/sw/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/si/auth.json
+++ b/assets/locales/sw/auth.json
diff --git a/api/locales/si/common.json b/assets/locales/sw/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/si/common.json
+++ b/assets/locales/sw/common.json
diff --git a/api/locales/sk/auth.json b/assets/locales/ta/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/sk/auth.json
+++ b/assets/locales/ta/auth.json
diff --git a/api/locales/sk/common.json b/assets/locales/ta/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/sk/common.json
+++ b/assets/locales/ta/common.json
diff --git a/api/locales/sr/auth.json b/assets/locales/te/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/sr/auth.json
+++ b/assets/locales/te/auth.json
diff --git a/api/locales/sr/common.json b/assets/locales/te/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/sr/common.json
+++ b/assets/locales/te/common.json
diff --git a/api/locales/sw/auth.json b/assets/locales/tl/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/sw/auth.json
+++ b/assets/locales/tl/auth.json
diff --git a/api/locales/sw/common.json b/assets/locales/tl/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/sw/common.json
+++ b/assets/locales/tl/common.json
diff --git a/api/locales/tr/auth.json b/assets/locales/tr/auth.json
index 670f07e3..670f07e3 100644
--- a/api/locales/tr/auth.json
+++ b/assets/locales/tr/auth.json
diff --git a/api/locales/tr/common.json b/assets/locales/tr/common.json
index 1f99c1d5..1f99c1d5 100644
--- a/api/locales/tr/common.json
+++ b/assets/locales/tr/common.json
diff --git a/api/locales/ta/auth.json b/assets/locales/ug/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ta/auth.json
+++ b/assets/locales/ug/auth.json
diff --git a/api/locales/ta/common.json b/assets/locales/ug/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ta/common.json
+++ b/assets/locales/ug/common.json
diff --git a/api/locales/te/auth.json b/assets/locales/uk/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/te/auth.json
+++ b/assets/locales/uk/auth.json
diff --git a/api/locales/te/common.json b/assets/locales/uk/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/te/common.json
+++ b/assets/locales/uk/common.json
diff --git a/api/locales/tl/auth.json b/assets/locales/ur/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/tl/auth.json
+++ b/assets/locales/ur/auth.json
diff --git a/api/locales/tl/common.json b/assets/locales/ur/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/tl/common.json
+++ b/assets/locales/ur/common.json
diff --git a/api/locales/ug/auth.json b/assets/locales/vec/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ug/auth.json
+++ b/assets/locales/vec/auth.json
diff --git a/api/locales/ug/common.json b/assets/locales/vec/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ug/common.json
+++ b/assets/locales/vec/common.json
diff --git a/api/locales/uk/auth.json b/assets/locales/vi/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/uk/auth.json
+++ b/assets/locales/vi/auth.json
diff --git a/api/locales/uk/common.json b/assets/locales/vi/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/uk/common.json
+++ b/assets/locales/vi/common.json
diff --git a/api/locales/ur/auth.json b/assets/locales/zh/auth.json
index a78d4d60..a78d4d60 100644
--- a/api/locales/ur/auth.json
+++ b/assets/locales/zh/auth.json
diff --git a/api/locales/ur/common.json b/assets/locales/zh/common.json
index 8bb9c042..8bb9c042 100644
--- a/api/locales/ur/common.json
+++ b/assets/locales/zh/common.json
diff --git a/api/assets/openapi.json b/assets/openapi.json
index a8a657b2..a8a657b2 100644
--- a/api/assets/openapi.json
+++ b/assets/openapi.json
diff --git a/api/assets/plugins/.gitkeep b/assets/plugins/.gitkeep
index e69de29b..e69de29b 100644
--- a/api/assets/plugins/.gitkeep
+++ b/assets/plugins/.gitkeep
diff --git a/assets/preload-plugins/.gitkeep b/assets/preload-plugins/.gitkeep
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/assets/preload-plugins/.gitkeep
@@ -0,0 +1 @@
+
diff --git a/assets/schemas.json b/assets/schemas.json
new file mode 100644
index 00000000..0fe3dfa1
--- /dev/null
+++ b/assets/schemas.json
@@ -0,0 +1,1471 @@
+{
+ "ActivitySchema": {
+ "type": "object",
+ "properties": {
+ "afk": {
+ "type": "boolean"
+ },
+ "status": {},
+ "activities": {
+ "type": "array",
+ "items": {}
+ },
+ "since": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "afk",
+ "status"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "BanCreateSchema": {
+ "type": "object",
+ "properties": {
+ "delete_message_days": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "BanModeratorSchema": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "user_id": {
+ "type": "string"
+ },
+ "guild_id": {
+ "type": "string"
+ },
+ "executor_id": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "executor_id",
+ "guild_id",
+ "id",
+ "user_id"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "BanRegistrySchema": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "user_id": {
+ "type": "string"
+ },
+ "guild_id": {
+ "type": "string"
+ },
+ "executor_id": {
+ "type": "string"
+ },
+ "ip": {
+ "type": "string"
+ },
+ "reason": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "executor_id",
+ "guild_id",
+ "id",
+ "user_id"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "BulkDeleteSchema": {
+ "type": "object",
+ "properties": {
+ "messages": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "messages"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "ts.server.TypingInstallerResponse": {
+ "type": "object",
+ "properties": {
+ "kind": {
+ "enum": [
+ "action::invalidate",
+ "action::packageInstalled",
+ "action::set",
+ "event::beginInstallTypes",
+ "event::endInstallTypes",
+ "event::initializationFailed",
+ "event::typesRegistry"
+ ],
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "kind"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "ts.server.PackageInstalledResponse": {
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "action::packageInstalled"
+ ]
+ },
+ "success": {
+ "type": "boolean"
+ },
+ "message": {
+ "type": "string"
+ },
+ "projectName": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "kind",
+ "message",
+ "projectName",
+ "success"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "ts.server.InitializationFailedResponse": {
+ "type": "object",
+ "properties": {
+ "kind": {
+ "type": "string",
+ "enum": [
+ "event::initializationFailed"
+ ]
+ },
+ "message": {
+ "type": "string"
+ },
+ "stack": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "kind",
+ "message"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "ts.server.ProjectResponse": {
+ "type": "object",
+ "properties": {
+ "projectName": {
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "action::invalidate",
+ "action::packageInstalled",
+ "action::set",
+ "event::beginInstallTypes",
+ "event::endInstallTypes",
+ "event::initializationFailed",
+ "event::typesRegistry"
+ ],
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "kind",
+ "projectName"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "ChannelPermissionOverwriteSchema": {
+ "type": "object",
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "ChannelReorderSchema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "lock_permissions": {
+ "type": "boolean"
+ },
+ "parent_id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id"
+ ]
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "DmChannelCreateSchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "recipients": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "recipients"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "EmojiCreateSchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "image": {
+ "type": "string"
+ },
+ "require_colons": {
+ "type": [
+ "null",
+ "boolean"
+ ]
+ },
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "image"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "EmojiModifySchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "GuildCreateSchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "maxLength": 100,
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "icon": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "channels": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ChannelModifySchema"
+ }
+ },
+ "guild_template_code": {
+ "type": "string"
+ },
+ "system_channel_id": {
+ "type": "string"
+ },
+ "rules_channel_id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ],
+ "definitions": {
+ "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"
+ },
+ "flags": {
+ "type": "integer"
+ },
+ "default_thread_rate_limit_per_user": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false
+ },
+ "ChannelPermissionOverwriteType": {
+ "enum": [
+ 0,
+ 1,
+ 2
+ ],
+ "type": "number"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "GuildTemplateCreateSchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "avatar": {
+ "type": [
+ "null",
+ "string"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "GuildUpdateSchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "banner": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "splash": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "features": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "verification_level": {
+ "type": "integer"
+ },
+ "default_message_notifications": {
+ "type": "integer"
+ },
+ "system_channel_flags": {
+ "type": "integer"
+ },
+ "explicit_content_filter": {
+ "type": "integer"
+ },
+ "public_updates_channel_id": {
+ "type": "string"
+ },
+ "afk_timeout": {
+ "type": "integer"
+ },
+ "afk_channel_id": {
+ "type": "string"
+ },
+ "preferred_locale": {
+ "type": "string"
+ },
+ "premium_progress_bar_enabled": {
+ "type": "boolean"
+ },
+ "region": {
+ "type": "string"
+ },
+ "icon": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "guild_template_code": {
+ "type": "string"
+ },
+ "system_channel_id": {
+ "type": "string"
+ },
+ "rules_channel_id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "GuildUpdateWelcomeScreenSchema": {
+ "type": "object",
+ "properties": {
+ "welcome_channels": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "channel_id": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "emoji_id": {
+ "type": "string"
+ },
+ "emoji_name": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "channel_id",
+ "description",
+ "emoji_name"
+ ]
+ }
+ },
+ "enabled": {
+ "type": "boolean"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "IdentifySchema": {
+ "type": "object",
+ "properties": {
+ "token": {
+ "type": "string"
+ },
+ "properties": {
+ "type": "object",
+ "properties": {
+ "os": {
+ "type": "string"
+ },
+ "os_atch": {
+ "type": "string"
+ },
+ "browser": {
+ "type": "string"
+ },
+ "device": {
+ "type": "string"
+ },
+ "$os": {
+ "type": "string"
+ },
+ "$browser": {
+ "type": "string"
+ },
+ "$device": {
+ "type": "string"
+ },
+ "browser_user_agent": {
+ "type": "string"
+ },
+ "browser_version": {
+ "type": "string"
+ },
+ "os_version": {
+ "type": "string"
+ },
+ "referrer": {
+ "type": "string"
+ },
+ "referring_domain": {
+ "type": "string"
+ },
+ "referrer_current": {
+ "type": "string"
+ },
+ "referring_domain_current": {
+ "type": "string"
+ },
+ "release_channel": {
+ "enum": [
+ "canary",
+ "dev",
+ "ptb",
+ "stable"
+ ],
+ "type": "string"
+ },
+ "client_build_number": {
+ "type": "integer"
+ },
+ "client_event_source": {},
+ "client_version": {
+ "type": "string"
+ },
+ "system_locale": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ },
+ "intents": {
+ "type": "string"
+ },
+ "presence": {
+ "$ref": "#/definitions/ActivitySchema"
+ },
+ "compress": {
+ "type": "boolean"
+ },
+ "large_threshold": {
+ "type": "integer"
+ },
+ "shard": {
+ "type": "array",
+ "items": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "integer"
+ }
+ ],
+ "minItems": 2,
+ "maxItems": 2
+ },
+ "guild_subscriptions": {
+ "type": "boolean"
+ },
+ "capabilities": {
+ "type": "integer"
+ },
+ "client_state": {
+ "type": "object",
+ "properties": {
+ "guild_hashes": {},
+ "highest_last_message_id": {
+ "type": "string"
+ },
+ "read_state_version": {
+ "type": "integer"
+ },
+ "user_guild_settings_version": {
+ "type": "integer"
+ },
+ "user_settings_version": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false
+ },
+ "v": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "properties",
+ "token"
+ ],
+ "definitions": {
+ "ActivitySchema": {
+ "type": "object",
+ "properties": {
+ "afk": {
+ "type": "boolean"
+ },
+ "status": {},
+ "activities": {
+ "type": "array",
+ "items": {}
+ },
+ "since": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "afk",
+ "status"
+ ]
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "InviteCreateSchema": {
+ "type": "object",
+ "properties": {
+ "target_user_id": {
+ "type": "string"
+ },
+ "target_type": {
+ "type": "string"
+ },
+ "validate": {
+ "type": "string"
+ },
+ "max_age": {
+ "type": "integer"
+ },
+ "max_uses": {
+ "type": "integer"
+ },
+ "temporary": {
+ "type": "boolean"
+ },
+ "unique": {
+ "type": "boolean"
+ },
+ "target_user": {
+ "type": "string"
+ },
+ "target_user_type": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "LoginSchema": {
+ "type": "object",
+ "properties": {
+ "login": {
+ "type": "string"
+ },
+ "password": {
+ "type": "string"
+ },
+ "undelete": {
+ "type": "boolean"
+ },
+ "captcha_key": {
+ "type": "string"
+ },
+ "login_source": {
+ "type": "string"
+ },
+ "gift_code_sku_id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "login",
+ "password"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "MemberChangeSchema": {
+ "type": "object",
+ "properties": {
+ "roles": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "MemberNickChangeSchema": {
+ "type": "object",
+ "properties": {
+ "nick": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "nick"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "MessageAcknowledgeSchema": {
+ "type": "object",
+ "properties": {
+ "manual": {
+ "type": "boolean"
+ },
+ "mention_count": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "MessageCreateSchema": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "integer"
+ },
+ "content": {
+ "type": "string"
+ },
+ "nonce": {
+ "type": "string"
+ },
+ "channel_id": {
+ "type": "string"
+ },
+ "tts": {
+ "type": "boolean"
+ },
+ "flags": {
+ "type": "string"
+ },
+ "embeds": {
+ "type": "array",
+ "items": {}
+ },
+ "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"
+ },
+ "file": {},
+ "attachments": {
+ "description": "TODO: we should create an interface for attachments\nTODO: OpenWAAO<-->attachment-style metadata conversion",
+ "type": "array",
+ "items": {}
+ },
+ "sticker_ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "MfaCodesSchema": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string"
+ },
+ "regenerate": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "password"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "ModifyGuildStickerSchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "minLength": 2,
+ "maxLength": 30,
+ "type": "string"
+ },
+ "description": {
+ "maxLength": 100,
+ "type": "string"
+ },
+ "tags": {
+ "maxLength": 200,
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "tags"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "PruneSchema": {
+ "type": "object",
+ "properties": {
+ "days": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "days"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "PurgeSchema": {
+ "type": "object",
+ "properties": {
+ "before": {
+ "type": "string"
+ },
+ "after": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "after",
+ "before"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "RegisterSchema": {
+ "type": "object",
+ "properties": {
+ "username": {
+ "minLength": 2,
+ "maxLength": 32,
+ "type": "string"
+ },
+ "password": {
+ "minLength": 1,
+ "maxLength": 72,
+ "type": "string"
+ },
+ "consent": {
+ "type": "boolean"
+ },
+ "email": {
+ "format": "email",
+ "type": "string"
+ },
+ "fingerprint": {
+ "type": "string"
+ },
+ "invite": {
+ "type": "string"
+ },
+ "date_of_birth": {
+ "type": "string"
+ },
+ "gift_code_sku_id": {
+ "type": "string"
+ },
+ "captcha_key": {
+ "type": "string"
+ },
+ "promotional_email_opt_in": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "consent",
+ "username"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "RelationshipPostSchema": {
+ "type": "object",
+ "properties": {
+ "discriminator": {
+ "type": "string"
+ },
+ "username": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "discriminator",
+ "username"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "RelationshipPutSchema": {
+ "type": "object",
+ "properties": {
+ "type": {}
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "RoleModifySchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "permissions": {
+ "type": "string"
+ },
+ "color": {
+ "type": "integer"
+ },
+ "hoist": {
+ "type": "boolean"
+ },
+ "mentionable": {
+ "type": "boolean"
+ },
+ "position": {
+ "type": "integer"
+ },
+ "icon": {
+ "type": "string"
+ },
+ "unicode_emoji": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "RolePositionUpdateSchema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "position": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "id",
+ "position"
+ ]
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "TemplateCreateSchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "TemplateModifySchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "TotpDisableSchema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "code"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "TotpEnableSchema": {
+ "type": "object",
+ "properties": {
+ "password": {
+ "type": "string"
+ },
+ "code": {
+ "type": "string"
+ },
+ "secret": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "password"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "TotpSchema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "type": "string"
+ },
+ "ticket": {
+ "type": "string"
+ },
+ "gift_code_sku_id": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "login_source": {
+ "type": [
+ "null",
+ "string"
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "code",
+ "ticket"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "UserModifySchema": {
+ "type": "object",
+ "properties": {
+ "username": {
+ "minLength": 1,
+ "maxLength": 100,
+ "type": "string"
+ },
+ "discriminator": {
+ "type": "string"
+ },
+ "avatar": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "bio": {
+ "maxLength": 1024,
+ "type": "string"
+ },
+ "accent_color": {
+ "type": "integer"
+ },
+ "banner": {
+ "type": [
+ "null",
+ "string"
+ ]
+ },
+ "password": {
+ "type": "string"
+ },
+ "new_password": {
+ "type": "string"
+ },
+ "code": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "UserSettingsSchema": {
+ "type": "object",
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "VanityUrlSchema": {
+ "type": "object",
+ "properties": {
+ "code": {
+ "minLength": 1,
+ "maxLength": 20,
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "VoiceStateUpdateSchema": {
+ "type": "object",
+ "properties": {
+ "channel_id": {
+ "type": "string"
+ },
+ "guild_id": {
+ "type": "string"
+ },
+ "suppress": {
+ "type": "boolean"
+ },
+ "request_to_speak_timestamp": {
+ "type": "string",
+ "format": "date-time"
+ },
+ "self_mute": {
+ "type": "boolean"
+ },
+ "self_deaf": {
+ "type": "boolean"
+ },
+ "self_video": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "channel_id"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "WebhookCreateSchema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "avatar": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "WidgetModifySchema": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "channel_id": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "channel_id",
+ "enabled"
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ },
+ "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"
+ },
+ "flags": {
+ "type": "integer"
+ },
+ "default_thread_rate_limit_per_user": {
+ "type": "integer"
+ }
+ },
+ "additionalProperties": false,
+ "definitions": {
+ "ChannelPermissionOverwriteType": {
+ "enum": [
+ 0,
+ 1,
+ 2
+ ],
+ "type": "number"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#"
+ }
+}
\ No newline at end of file
diff --git a/api/assets/user.css b/assets/user.css
index a7e5c4f3..a7e5c4f3 100644
--- a/api/assets/user.css
+++ b/assets/user.css
diff --git a/api/assets/widget/banner1.png b/assets/widget/banner1.png
index ed9bd5c0..ed9bd5c0 100644
--- a/api/assets/widget/banner1.png
+++ b/assets/widget/banner1.png
Binary files differdiff --git a/api/assets/widget/banner2.png b/assets/widget/banner2.png
index 90d3713d..90d3713d 100644
--- a/api/assets/widget/banner2.png
+++ b/assets/widget/banner2.png
Binary files differdiff --git a/api/assets/widget/banner3.png b/assets/widget/banner3.png
index 22351898..22351898 100644
--- a/api/assets/widget/banner3.png
+++ b/assets/widget/banner3.png
Binary files differdiff --git a/api/assets/widget/banner4.png b/assets/widget/banner4.png
index e6bd7b6f..e6bd7b6f 100644
--- a/api/assets/widget/banner4.png
+++ b/assets/widget/banner4.png
Binary files differdiff --git a/api/assets/widget/shield.png b/assets/widget/shield.png
index 30277db2..30277db2 100644
--- a/api/assets/widget/shield.png
+++ b/assets/widget/shield.png
Binary files differ |