From c560d58f68278aa07fc5847517431cc47100b8e4 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Mon, 14 Aug 2023 12:49:20 +1000 Subject: [PATCH] random bullshit, go!! --- assets/schemas.json | 15548 +++++++++++----- package.json | 5 +- src/activitypub/Server.ts | 64 + src/activitypub/index.ts | 1 + .../routes/channel/#channel_id/index.ts | 30 + .../#channel_id/messages/#message_id/index.ts | 50 + .../routes/channel/#channel_id/outbox.ts | 76 + src/activitypub/routes/user.ts | 36 + src/activitypub/start.ts | 7 + src/activitypub/util/actor.ts | 0 src/activitypub/webfinger/index.ts | 63 + src/bundle/Server.ts | 18 +- src/util/config/Config.ts | 2 + .../config/types/FederationConfiguration.ts | 5 + .../schemas/responses/WebfingerResponse.ts | 12 + src/util/schemas/responses/index.ts | 3 +- tsconfig.json | 3 +- 17 files changed, 11727 insertions(+), 4196 deletions(-) create mode 100644 src/activitypub/Server.ts create mode 100644 src/activitypub/index.ts create mode 100644 src/activitypub/routes/channel/#channel_id/index.ts create mode 100644 src/activitypub/routes/channel/#channel_id/messages/#message_id/index.ts create mode 100644 src/activitypub/routes/channel/#channel_id/outbox.ts create mode 100644 src/activitypub/routes/user.ts create mode 100644 src/activitypub/start.ts create mode 100644 src/activitypub/util/actor.ts create mode 100644 src/activitypub/webfinger/index.ts create mode 100644 src/util/config/types/FederationConfiguration.ts create mode 100644 src/util/schemas/responses/WebfingerResponse.ts diff --git a/assets/schemas.json b/assets/schemas.json index 3891cee7..ec0b51e9 100644 --- a/assets/schemas.json +++ b/assets/schemas.json @@ -4467,6 +4467,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -8672,6 +8695,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -12877,6 +12923,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -17077,6 +17146,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -21313,6 +21405,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -25518,6 +25633,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -29714,6 +29852,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -33913,6 +34074,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -38121,6 +38305,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -42317,6 +42524,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -46513,6 +46743,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -50728,6 +50981,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -54927,6 +55203,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -59186,6 +59485,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -63404,6 +63726,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -67763,6 +68108,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -71980,6 +72348,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -76207,6 +76598,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -80416,6 +80830,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -84631,6 +85068,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -88836,6 +89296,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -93029,6 +93512,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -97333,6 +97839,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -101634,6 +102163,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -105830,6 +106382,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -110034,6 +110609,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -114231,6 +114829,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -118428,6 +119049,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -122660,6 +123304,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -126857,6 +127524,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -131053,6 +131743,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -135264,6 +135977,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -139464,6 +140200,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -143738,6 +144497,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -147934,6 +148716,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -152130,6 +152935,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -156323,6 +157151,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -160522,6 +161373,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -164731,6 +165605,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -168924,6 +169821,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -173166,6 +174086,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -177394,6 +178337,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -181587,6 +182553,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -185805,6 +186794,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -190112,6 +191124,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -194304,6 +195339,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -198535,6 +199593,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -202754,6 +203835,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -207025,6 +208129,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -211218,6 +212345,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -215419,6 +216569,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -219610,6 +220783,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -223807,6 +225003,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -228004,6 +229223,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -232201,6 +233443,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -236430,6 +237695,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -240631,6 +241919,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -244822,6 +246133,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -249019,6 +250353,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -253227,6 +254584,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -257449,6 +258829,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -261642,6 +263045,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -265838,6 +267264,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -270063,6 +271512,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -274256,6 +275728,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -278528,6 +280023,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -282728,6 +284246,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -286921,6 +288462,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -291114,6 +292678,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -295314,6 +296901,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -299511,6 +301121,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -303704,6 +305337,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -307972,6 +309628,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -312176,6 +313855,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -316381,6 +318083,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -320636,6 +322361,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -324850,6 +326598,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -329070,6 +330841,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -333284,6 +335078,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -337477,6 +339294,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -341698,6 +343538,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -345931,6 +347794,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -350118,6 +352004,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -354315,6 +356224,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -358508,6 +360440,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -362708,6 +364663,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -367105,6 +369083,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -371289,6 +373290,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -375567,6 +377591,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -379754,6 +381801,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -383941,6 +386011,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -388128,6 +390221,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -392409,6 +394525,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -396594,6 +398733,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -400779,6 +402941,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -404964,6 +407149,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -409151,6 +411359,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -413338,6 +415569,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -417525,6 +419779,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -421712,6 +423989,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -425899,6 +428199,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -430150,6 +432473,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -434337,6 +436683,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -438524,6 +440893,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -442711,6 +445103,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -446942,6 +449357,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -451358,6 +453796,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -455545,6 +458006,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -459732,6 +462216,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -463919,6 +466426,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -468106,6 +470636,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -472319,6 +474872,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -476506,6 +479082,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -480714,6 +483313,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -484915,6 +487537,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -489225,4211 +491870,29 @@ "bio" ] }, - "TokenResponse": { + "WebfingerLink": { "type": "object", "properties": { - "token": { - "type": "string" - }, - "settings": { - "$ref": "#/definitions/UserSettings" - } - }, - "additionalProperties": false, - "required": [ - "settings", - "token" - ] - }, - "MFAResponse": { - "type": "object", - "properties": { - "ticket": { - "type": "string" - }, - "mfa": { - "type": "boolean", - "enum": [ - true - ] - }, - "sms": { - "type": "boolean", - "enum": [ - false - ] - }, - "token": { - "type": "null" - } - }, - "additionalProperties": false, - "required": [ - "mfa", - "sms", - "ticket", - "token" - ] - }, - "WebAuthnResponse": { - "type": "object", - "properties": { - "webauthn": { - "type": "string" - }, - "ticket": { - "type": "string" - }, - "mfa": { - "type": "boolean", - "enum": [ - true - ] - }, - "sms": { - "type": "boolean", - "enum": [ - false - ] - }, - "token": { - "type": "null" - } - }, - "additionalProperties": false, - "required": [ - "mfa", - "sms", - "ticket", - "token", - "webauthn" - ] - } - }, - "$schema": "http://json-schema.org/draft-07/schema#" - }, - "UserRelationshipsResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/RelationshipType" - }, - "nickname": { - "type": "null" - }, - "user": { - "$ref": "#/definitions/PublicUser" - } - }, - "additionalProperties": false, - "required": [ - "id", - "nickname", - "type", - "user" - ], - "definitions": { - "ChannelPermissionOverwriteType": { - "enum": [ - 0, - 1, - 2 - ], - "type": "number" - }, - "ConnectedAccountTokenData": { - "type": "object", - "properties": { - "access_token": { - "type": "string" - }, - "token_type": { - "type": "string" - }, - "scope": { - "type": "string" - }, - "refresh_token": { - "type": "string" - }, - "expires_in": { - "type": "integer" - }, - "expires_at": { - "type": "integer" - }, - "fetched_at": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "access_token", - "fetched_at" - ] - }, - "ChannelModifySchema": { - "type": "object", - "properties": { - "name": { - "maxLength": 100, + "rel": { "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" - } - } - }, - "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" - }, - "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 - }, - "ChannelOverride": { - "type": "object", - "properties": { - "message_notifications": { - "type": "integer" - }, - "mute_config": { - "$ref": "#/definitions/MuteConfig" - }, - "muted": { - "type": "boolean" - }, - "channel_id": { - "type": [ - "null", - "string" - ] - } - }, - "additionalProperties": false, - "required": [ - "channel_id", - "message_notifications", - "mute_config", - "muted" - ] - }, - "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" - ] - }, - "GenerateWebAuthnCredentialsSchema": { - "type": "object", - "properties": { - "password": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "password" - ] - }, - "CreateWebAuthnCredentialSchema": { - "type": "object", - "properties": { - "credential": { - "type": "string" - }, - "name": { - "type": "string" - }, - "ticket": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "credential", - "name", - "ticket" - ] - }, - "APIErrorResponse": { - "type": "object", - "properties": { - "code": { - "type": "integer" - }, - "message": { - "type": "string" - }, - "errors": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "_errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "code": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "code", - "message" - ] - } - } - }, - "additionalProperties": false, - "required": [ - "_errors" - ] - } - } - }, - "additionalProperties": false, - "required": [ - "code", - "errors", - "message" - ] - }, - "CaptchaRequiredResponse": { - "type": "object", - "properties": { - "captcha_key": { - "type": "string" - }, - "captcha_sitekey": { - "type": "string" - }, - "captcha_service": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "captcha_key", - "captcha_service", - "captcha_sitekey" - ] - }, - "Guild": { - "type": "object", - "properties": { - "afk_channel_id": { - "type": "string" - }, - "afk_channel": { - "$ref": "#/definitions/Channel" - }, - "afk_timeout": { - "type": "integer" - }, - "bans": { - "type": "array", - "items": { - "$ref": "#/definitions/Ban" - } - }, - "banner": { - "type": "string" - }, - "default_message_notifications": { - "type": "integer" - }, - "description": { - "type": "string" - }, - "discovery_splash": { - "type": "string" - }, - "explicit_content_filter": { - "type": "integer" - }, - "features": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "primary_category_id": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "large": { - "type": "boolean", - "default": false - }, - "max_members": { - "type": "integer" - }, - "max_presences": { - "type": "integer" - }, - "max_video_channel_users": { - "type": "integer" - }, - "member_count": { - "type": "integer" - }, - "presence_count": { - "type": "integer" - }, - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/Member" - } - }, - "roles": { - "type": "array", - "items": { - "$ref": "#/definitions/Role" - } - }, - "channels": { - "type": "array", - "items": { - "$ref": "#/definitions/Channel" - } - }, - "template_id": { + "href": { "type": "string" }, "template": { - "$ref": "#/definitions/Template" - }, - "emojis": { - "type": "array", - "items": { - "$ref": "#/definitions/Emoji" - } - }, - "stickers": { - "type": "array", - "items": { - "$ref": "#/definitions/Sticker" - } - }, - "invites": { - "type": "array", - "items": { - "$ref": "#/definitions/Invite" - } - }, - "voice_states": { - "type": "array", - "items": { - "$ref": "#/definitions/VoiceState" - } - }, - "webhooks": { - "type": "array", - "items": { - "$ref": "#/definitions/Webhook" - } - }, - "mfa_level": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "owner": { - "$ref": "#/definitions/User" - }, - "preferred_locale": { - "type": "string" - }, - "premium_subscription_count": { - "type": "integer" - }, - "premium_tier": { - "type": "integer" - }, - "public_updates_channel_id": { - "type": "string" - }, - "public_updates_channel": { - "$ref": "#/definitions/Channel" - }, - "rules_channel_id": { - "type": "string" - }, - "rules_channel": { - "type": "string" - }, - "region": { - "type": "string" - }, - "splash": { - "type": "string" - }, - "system_channel_id": { - "type": "string" - }, - "system_channel": { - "$ref": "#/definitions/Channel" - }, - "system_channel_flags": { - "type": "integer" - }, - "unavailable": { - "type": "boolean", - "default": false - }, - "verification_level": { - "type": "integer" - }, - "welcome_screen": { - "$ref": "#/definitions/GuildWelcomeScreen" - }, - "widget_channel_id": { - "type": "string" - }, - "widget_channel": { - "$ref": "#/definitions/Channel" - }, - "widget_enabled": { - "type": "boolean", - "default": true - }, - "nsfw_level": { - "type": "integer" - }, - "nsfw": { - "type": "boolean", - "default": false - }, - "parent": { - "type": "string" - }, - "permissions": { - "type": "integer" - }, - "premium_progress_bar_enabled": { - "type": "boolean", - "default": false - }, - "id": { "type": "string" } }, "additionalProperties": false, "required": [ - "bans", - "channels", - "emojis", - "features", - "id", - "invites", - "members", - "name", - "nsfw", - "premium_progress_bar_enabled", - "public_updates_channel_id", - "roles", - "stickers", - "template", - "unavailable", - "voice_states", - "webhooks", - "welcome_screen", - "widget_enabled" - ] - }, - "Channel": { - "type": "object", - "properties": { - "created_at": { - "type": "string", - "format": "date-time" - }, - "name": { - "type": "string" - }, - "icon": { - "type": [ - "null", - "string" - ] - }, - "type": { - "$ref": "#/definitions/ChannelType" - }, - "recipients": { - "type": "array", - "items": { - "$ref": "#/definitions/Recipient" - } - }, - "last_message_id": { - "type": "string" - }, - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "parent_id": { - "type": "string" - }, - "parent": { - "$ref": "#/definitions/Channel" - }, - "owner_id": { - "type": "string" - }, - "owner": { - "$ref": "#/definitions/User" - }, - "last_pin_timestamp": { - "type": "integer" - }, - "default_auto_archive_duration": { - "type": "integer" - }, - "position": { - "type": "integer" - }, - "permission_overwrites": { - "type": "array", - "items": { - "$ref": "#/definitions/ChannelPermissionOverwrite" - } - }, - "video_quality_mode": { - "type": "integer" - }, - "bitrate": { - "type": "integer" - }, - "user_limit": { - "type": "integer" - }, - "nsfw": { - "type": "boolean", - "default": false - }, - "rate_limit_per_user": { - "type": "integer" - }, - "topic": { - "type": "string" - }, - "invites": { - "type": "array", - "items": { - "$ref": "#/definitions/Invite" - } - }, - "retention_policy_id": { - "type": "string" - }, - "messages": { - "type": "array", - "items": { - "$ref": "#/definitions/Message" - } - }, - "voice_states": { - "type": "array", - "items": { - "$ref": "#/definitions/VoiceState" - } - }, - "read_states": { - "type": "array", - "items": { - "$ref": "#/definitions/ReadState" - } - }, - "webhooks": { - "type": "array", - "items": { - "$ref": "#/definitions/Webhook" - } - }, - "flags": { - "type": "integer", - "default": 0 - }, - "default_thread_rate_limit_per_user": { - "type": "integer", - "default": 0 - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "created_at", - "default_thread_rate_limit_per_user", - "flags", - "guild", - "id", - "nsfw", - "owner", - "parent_id", + "href", + "rel", "type" ] }, - "ChannelType": { - "enum": [ - 0, - 1, - 10, - 11, - 12, - 13, - 14, - 15, - 2, - 255, - 3, - 33, - 34, - 35, - 4, - 5, - 6, - 64, - 7, - 8, - 9 - ], - "type": "number" - }, - "Recipient": { - "type": "object", - "properties": { - "channel_id": { - "type": "string" - }, - "channel": { - "$ref": "#/definitions/Channel" - }, - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "closed": { - "type": "boolean" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "channel", - "channel_id", - "closed", - "id", - "user", - "user_id" - ] - }, - "User": { - "type": "object", - "properties": { - "username": { - "type": "string" - }, - "discriminator": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "accent_color": { - "type": "integer" - }, - "banner": { - "type": "string" - }, - "theme_colors": { - "type": "array", - "items": { - "type": "integer" - } - }, - "pronouns": { - "type": "string" - }, - "phone": { - "type": "string" - }, - "desktop": { - "type": "boolean", - "default": false - }, - "mobile": { - "type": "boolean", - "default": false - }, - "premium": { - "type": "boolean" - }, - "premium_type": { - "type": "integer" - }, - "bot": { - "type": "boolean", - "default": false - }, - "bio": { - "type": "string", - "default": "" - }, - "system": { - "type": "boolean", - "default": false - }, - "nsfw_allowed": { - "type": "boolean", - "default": true - }, - "mfa_enabled": { - "type": "boolean", - "default": false - }, - "webauthn_enabled": { - "type": "boolean", - "default": false - }, - "totp_secret": { - "type": "string", - "default": "" - }, - "totp_last_ticket": { - "type": "string", - "default": "" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "premium_since": { - "type": "string", - "format": "date-time" - }, - "verified": { - "type": "boolean" - }, - "disabled": { - "type": "boolean", - "default": false - }, - "deleted": { - "type": "boolean", - "default": false - }, - "email": { - "type": "string" - }, - "flags": { - "type": "integer", - "default": 0 - }, - "public_flags": { - "type": "integer", - "default": 0 - }, - "purchased_flags": { - "type": "integer", - "default": 0 - }, - "premium_usage_flags": { - "type": "integer", - "default": 0 - }, - "rights": { - "type": "string" - }, - "sessions": { - "type": "array", - "items": { - "$ref": "#/definitions/Session" - } - }, - "relationships": { - "type": "array", - "items": { - "$ref": "#/definitions/Relationship" - } - }, - "connected_accounts": { - "type": "array", - "items": { - "$ref": "#/definitions/ConnectedAccount" - } - }, - "data": { - "type": "object", - "properties": { - "valid_tokens_since": { - "type": "string", - "format": "date-time" - }, - "hash": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "valid_tokens_since" - ] - }, - "fingerprints": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "settings": { - "$ref": "#/definitions/UserSettings" - }, - "extended_settings": { - "type": "string", - "default": "{}" - }, - "security_keys": { - "type": "array", - "items": { - "$ref": "#/definitions/SecurityKey" - } - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "bio", - "bot", - "connected_accounts", - "created_at", - "data", - "deleted", - "desktop", - "disabled", - "discriminator", - "extended_settings", - "fingerprints", - "flags", - "id", - "mfa_enabled", - "mobile", - "nsfw_allowed", - "premium", - "premium_since", - "premium_type", - "premium_usage_flags", - "public_flags", - "purchased_flags", - "relationships", - "rights", - "security_keys", - "sessions", - "settings", - "system", - "username", - "verified", - "webauthn_enabled" - ] - }, - "Session": { - "type": "object", - "properties": { - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "session_id": { - "type": "string" - }, - "activities": { - "type": "array", - "items": { - "$ref": "#/definitions/Activity" - } - }, - "client_info": { - "type": "object", - "properties": { - "client": { - "type": "string" - }, - "os": { - "type": "string" - }, - "version": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "client", - "os", - "version" - ] - }, - "status": { - "$ref": "#/definitions/Status" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "activities", - "client_info", - "id", - "session_id", - "status", - "user", - "user_id" - ] - }, - "Relationship": { - "type": "object", - "properties": { - "from_id": { - "type": "string" - }, - "from": { - "$ref": "#/definitions/User" - }, - "to_id": { - "type": "string" - }, - "to": { - "$ref": "#/definitions/User" - }, - "nickname": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/RelationshipType" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "from", - "from_id", - "id", - "to", - "to_id", - "type" - ] - }, - "RelationshipType": { - "enum": [ - 1, - 2, - 3, - 4 - ], - "type": "number" - }, - "ConnectedAccount": { - "type": "object", - "properties": { - "external_id": { - "type": "string" - }, - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "friend_sync": { - "type": "boolean", - "default": false - }, - "name": { - "type": "string" - }, - "revoked": { - "type": "boolean", - "default": false - }, - "show_activity": { - "type": "integer", - "default": 0 - }, - "type": { - "type": "string" - }, - "verified": { - "type": "boolean", - "default": true - }, - "visibility": { - "type": "integer", - "default": 0 - }, - "integrations": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "metadata_": {}, - "metadata_visibility": { - "type": "integer", - "default": 0 - }, - "two_way_link": { - "type": "boolean", - "default": false - }, - "token_data": { - "anyOf": [ - { - "$ref": "#/definitions/ConnectedAccountTokenData" - }, - { - "type": "null" - } - ] - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "external_id", - "id", - "name", - "type", - "user", - "user_id" - ] - }, - "UserSettings": { - "type": "object", - "properties": { - "index": { - "type": "string" - }, - "afk_timeout": { - "type": "integer", - "default": 3600 - }, - "allow_accessibility_detection": { - "type": "boolean", - "default": true - }, - "animate_emoji": { - "type": "boolean", - "default": true - }, - "animate_stickers": { - "type": "integer", - "default": 0 - }, - "contact_sync_enabled": { - "type": "boolean", - "default": false - }, - "convert_emoticons": { - "type": "boolean", - "default": false - }, - "custom_status": { - "anyOf": [ - { - "$ref": "#/definitions/CustomStatus" - }, - { - "type": "null" - } - ], - "default": null - }, - "default_guilds_restricted": { - "type": "boolean", - "default": false - }, - "detect_platform_accounts": { - "type": "boolean", - "default": false - }, - "developer_mode": { - "type": "boolean", - "default": true - }, - "disable_games_tab": { - "type": "boolean", - "default": true - }, - "enable_tts_command": { - "type": "boolean", - "default": false - }, - "explicit_content_filter": { - "type": "integer", - "default": 0 - }, - "friend_source_flags": { - "$ref": "#/definitions/FriendSourceFlags" - }, - "gateway_connected": { - "type": "boolean", - "default": false - }, - "gif_auto_play": { - "type": "boolean", - "default": false - }, - "guild_folders": { - "type": "array", - "items": { - "$ref": "#/definitions/GuildFolder" - }, - "default": [] - }, - "guild_positions": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "inline_attachment_media": { - "type": "boolean", - "default": true - }, - "inline_embed_media": { - "type": "boolean", - "default": true - }, - "locale": { - "type": "string", - "default": "en-US" - }, - "message_display_compact": { - "type": "boolean", - "default": false - }, - "native_phone_integration_enabled": { - "type": "boolean", - "default": true - }, - "render_embeds": { - "type": "boolean", - "default": true - }, - "render_reactions": { - "type": "boolean", - "default": true - }, - "restricted_guilds": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "show_current_game": { - "type": "boolean", - "default": true - }, - "status": { - "enum": [ - "dnd", - "idle", - "invisible", - "offline", - "online" - ], - "type": "string", - "default": "online" - }, - "stream_notifications_enabled": { - "type": "boolean", - "default": false - }, - "theme": { - "enum": [ - "dark", - "light" - ], - "type": "string", - "default": "dark" - }, - "timezone_offset": { - "type": "integer", - "default": 0 - } - }, - "additionalProperties": false, - "required": [ - "afk_timeout", - "allow_accessibility_detection", - "animate_emoji", - "animate_stickers", - "contact_sync_enabled", - "convert_emoticons", - "custom_status", - "default_guilds_restricted", - "detect_platform_accounts", - "developer_mode", - "disable_games_tab", - "enable_tts_command", - "explicit_content_filter", - "friend_source_flags", - "gateway_connected", - "gif_auto_play", - "guild_folders", - "guild_positions", - "index", - "inline_attachment_media", - "inline_embed_media", - "locale", - "message_display_compact", - "native_phone_integration_enabled", - "render_embeds", - "render_reactions", - "restricted_guilds", - "show_current_game", - "status", - "stream_notifications_enabled", - "theme", - "timezone_offset" - ] - }, - "SecurityKey": { - "type": "object", - "properties": { - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "key_id": { - "type": "string" - }, - "public_key": { - "type": "string" - }, - "counter": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "counter", - "id", - "key_id", - "name", - "public_key", - "user", - "user_id" - ] - }, - "ChannelPermissionOverwrite": { - "type": "object", - "properties": { - "allow": { - "type": "string" - }, - "deny": { - "type": "string" - }, - "id": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/ChannelPermissionOverwriteType" - } - }, - "additionalProperties": false, - "required": [ - "allow", - "deny", - "id", - "type" - ] - }, - "Invite": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "temporary": { - "type": "boolean" - }, - "uses": { - "type": "integer" - }, - "max_uses": { - "type": "integer" - }, - "max_age": { - "type": "integer" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "expires_at": { - "type": "string", - "format": "date-time" - }, - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "channel_id": { - "type": "string" - }, - "channel": { - "$ref": "#/definitions/Channel" - }, - "inviter_id": { - "type": "string" - }, - "inviter": { - "$ref": "#/definitions/User" - }, - "target_user_id": { - "type": "string" - }, - "target_user": { - "type": "string" - }, - "target_user_type": { - "type": "integer" - }, - "vanity_url": { - "type": "boolean" - }, - "flags": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "channel", - "channel_id", - "code", - "created_at", - "flags", - "guild", - "guild_id", - "inviter", - "max_age", - "max_uses", - "target_user_id", - "temporary", - "uses" - ] - }, - "Message": { - "type": "object", - "properties": { - "channel_id": { - "type": "string" - }, - "channel": { - "$ref": "#/definitions/Channel" - }, - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "author_id": { - "type": "string" - }, - "author": { - "$ref": "#/definitions/User" - }, - "member_id": { - "type": "string" - }, - "member": { - "$ref": "#/definitions/Member" - }, - "webhook_id": { - "type": "string" - }, - "webhook": { - "$ref": "#/definitions/Webhook" - }, - "application_id": { - "type": "string" - }, - "application": { - "$ref": "#/definitions/Application" - }, - "content": { - "type": "string" - }, - "timestamp": { - "type": "string", - "format": "date-time" - }, - "edited_timestamp": { - "type": "string", - "format": "date-time" - }, - "tts": { - "type": "boolean" - }, - "mention_everyone": { - "type": "boolean" - }, - "mentions": { - "type": "array", - "items": { - "$ref": "#/definitions/User" - } - }, - "mention_roles": { - "type": "array", - "items": { - "$ref": "#/definitions/Role" - } - }, - "mention_channels": { - "type": "array", - "items": { - "$ref": "#/definitions/Channel" - } - }, - "sticker_items": { - "type": "array", - "items": { - "$ref": "#/definitions/Sticker" - } - }, - "attachments": { - "type": "array", - "items": { - "$ref": "#/definitions/Attachment_1" - } - }, - "embeds": { - "type": "array", - "items": { - "$ref": "#/definitions/Embed" - } - }, - "reactions": { - "type": "array", - "items": { - "$ref": "#/definitions/Reaction" - } - }, - "nonce": { - "type": "string" - }, - "pinned": { - "type": "boolean" - }, - "type": { - "$ref": "#/definitions/MessageType" - }, - "activity": { - "type": "object", - "properties": { - "type": { - "type": "integer" - }, - "party_id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "party_id", - "type" - ] - }, - "flags": { - "type": "integer" - }, - "message_reference": { - "type": "object", - "properties": { - "message_id": { - "type": "string" - }, - "channel_id": { - "type": "string" - }, - "guild_id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "message_id" - ] - }, - "referenced_message": { - "$ref": "#/definitions/Message" - }, - "interaction": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/InteractionType" - }, - "name": { - "type": "string" - }, - "user_id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "id", - "name", - "type", - "user_id" - ] - }, - "components": { - "type": "array", - "items": { - "$ref": "#/definitions/MessageComponent" - } - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "channel", - "embeds", - "id", - "mention_channels", - "mention_roles", - "mentions", - "reactions", - "timestamp", - "type" - ] - }, - "Member": { - "type": "object", - "properties": { - "index": { - "type": "string" - }, - "id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "nick": { - "type": "string" - }, - "roles": { - "type": "array", - "items": { - "$ref": "#/definitions/Role" - } - }, - "joined_at": { - "type": "string", - "format": "date-time" - }, - "premium_since": { - "type": "integer" - }, - "deaf": { - "type": "boolean" - }, - "mute": { - "type": "boolean" - }, - "pending": { - "type": "boolean" - }, - "settings": { - "$ref": "#/definitions/UserGuildSettings" - }, - "last_message_id": { - "type": "string" - }, - "joined_by": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "banner": { - "type": "string" - }, - "bio": { - "type": "string" - }, - "theme_colors": { - "type": "array", - "items": { - "type": "integer" - } - }, - "pronouns": { - "type": "string" - }, - "communication_disabled_until": { - "type": "string", - "format": "date-time" - } - }, - "additionalProperties": false, - "required": [ - "avatar", - "banner", - "bio", - "communication_disabled_until", - "deaf", - "guild", - "guild_id", - "id", - "index", - "joined_at", - "joined_by", - "mute", - "pending", - "roles", - "settings", - "user" - ] - }, - "Role": { - "type": "object", - "properties": { - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "color": { - "type": "integer" - }, - "hoist": { - "type": "boolean" - }, - "managed": { - "type": "boolean" - }, - "mentionable": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "permissions": { - "type": "string" - }, - "position": { - "type": "integer" - }, - "icon": { - "type": "string" - }, - "unicode_emoji": { - "type": "string" - }, - "tags": { - "type": "object", - "properties": { - "bot_id": { - "type": "string" - }, - "integration_id": { - "type": "string" - }, - "premium_subscriber": { - "type": "boolean" - } - }, - "additionalProperties": false - }, - "flags": { - "type": "integer" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "color", - "flags", - "guild", - "guild_id", - "hoist", - "id", - "managed", - "mentionable", - "name", - "permissions", - "position" - ] - }, - "UserGuildSettings": { - "type": "object", - "properties": { - "channel_overrides": { - "anyOf": [ - { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/ChannelOverride" - } - }, - { - "type": "null" - } - ] - }, - "message_notifications": { - "type": "integer" - }, - "mobile_push": { - "type": "boolean" - }, - "mute_config": { - "anyOf": [ - { - "$ref": "#/definitions/MuteConfig" - }, - { - "type": "null" - } - ] - }, - "muted": { - "type": "boolean" - }, - "suppress_everyone": { - "type": "boolean" - }, - "suppress_roles": { - "type": "boolean" - }, - "version": { - "type": "integer" - }, - "guild_id": { - "type": [ - "null", - "string" - ] - }, - "flags": { - "type": "integer" - }, - "mute_scheduled_events": { - "type": "boolean" - }, - "hide_muted_channels": { - "type": "boolean" - }, - "notify_highlights": { - "type": "number", - "enum": [ - 0 - ] - } - }, - "additionalProperties": false, - "required": [ - "channel_overrides", - "flags", - "guild_id", - "hide_muted_channels", - "message_notifications", - "mobile_push", - "mute_config", - "mute_scheduled_events", - "muted", - "notify_highlights", - "suppress_everyone", - "suppress_roles", - "version" - ] - }, - "Webhook": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/WebhookType" - }, - "name": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "token": { - "type": "string" - }, - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "channel_id": { - "type": "string" - }, - "channel": { - "$ref": "#/definitions/Channel" - }, - "application_id": { - "type": "string" - }, - "application": { - "$ref": "#/definitions/Application" - }, - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "source_guild_id": { - "type": "string" - }, - "source_guild": { - "$ref": "#/definitions/Guild" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "application", - "application_id", - "channel", - "channel_id", - "guild", - "guild_id", - "id", - "source_guild", - "source_guild_id", - "type", - "user", - "user_id" - ] - }, - "WebhookType": { - "enum": [ - 1, - 2, - 3 - ], - "type": "number" - }, - "Application": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "description": { - "type": "string" - }, - "summary": { - "type": "string", - "default": "" - }, - "type": { - "type": "object", - "properties": {}, - "additionalProperties": true - }, - "hook": { - "type": "boolean", - "default": true - }, - "bot_public": { - "type": "boolean", - "default": true - }, - "bot_require_code_grant": { - "type": "boolean", - "default": false - }, - "verify_key": { - "type": "string" - }, - "owner": { - "$ref": "#/definitions/User" - }, - "flags": { - "type": "integer", - "default": 0 - }, - "redirect_uris": { - "type": "array", - "items": { - "type": "string" - }, - "default": [] - }, - "rpc_application_state": { - "type": "integer", - "default": 0 - }, - "store_application_state": { - "type": "integer", - "default": 1 - }, - "verification_state": { - "type": "integer", - "default": 1 - }, - "interactions_endpoint_url": { - "type": "string" - }, - "integration_public": { - "type": "boolean", - "default": true - }, - "integration_require_code_grant": { - "type": "boolean", - "default": false - }, - "discoverability_state": { - "type": "integer", - "default": 1 - }, - "discovery_eligibility_flags": { - "type": "integer", - "default": 2240 - }, - "bot": { - "$ref": "#/definitions/User" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - }, - "cover_image": { - "type": "string" - }, - "install_params": { - "type": "object", - "properties": { - "scopes": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissions": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "permissions", - "scopes" - ] - }, - "terms_of_service_url": { - "type": "string" - }, - "privacy_policy_url": { - "type": "string" - }, - "team": { - "$ref": "#/definitions/Team" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "description", - "discoverability_state", - "discovery_eligibility_flags", - "flags", - "hook", - "id", - "integration_public", - "integration_require_code_grant", - "name", - "owner", - "redirect_uris", - "rpc_application_state", - "store_application_state", - "summary", - "verification_state", - "verify_key" - ] - }, - "Team": { - "type": "object", - "properties": { - "icon": { - "type": "string" - }, - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/TeamMember" - } - }, - "name": { - "type": "string" - }, - "owner_user_id": { - "type": "string" - }, - "owner_user": { - "$ref": "#/definitions/User" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "id", - "members", - "name", - "owner_user", - "owner_user_id" - ] - }, - "TeamMember": { - "type": "object", - "properties": { - "membership_state": { - "$ref": "#/definitions/TeamMemberState" - }, - "permissions": { - "type": "array", - "items": { - "type": "string" - } - }, - "team_id": { - "type": "string" - }, - "team": { - "$ref": "#/definitions/Team" - }, - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "id", - "membership_state", - "permissions", - "team", - "team_id", - "user", - "user_id" - ] - }, - "TeamMemberState": { - "enum": [ - 1, - 2 - ], - "type": "number" - }, - "Sticker": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "available": { - "type": "boolean" - }, - "tags": { - "type": "string" - }, - "pack_id": { - "type": "string" - }, - "pack": { - "$ref": "#/definitions/StickerPack" - }, - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "type": { - "$ref": "#/definitions/StickerType" - }, - "format_type": { - "$ref": "#/definitions/StickerFormatType" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "format_type", - "id", - "name", - "pack", - "type" - ] - }, - "StickerPack": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "banner_asset_id": { - "type": "string" - }, - "stickers": { - "type": "array", - "items": { - "$ref": "#/definitions/Sticker" - } - }, - "cover_sticker_id": { - "type": "string" - }, - "cover_sticker": { - "$ref": "#/definitions/Sticker" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "id", - "name", - "stickers" - ] - }, - "StickerType": { - "enum": [ - 1, - 2 - ], - "type": "number" - }, - "StickerFormatType": { - "enum": [ - 0, - 1, - 2, - 3 - ], - "type": "number" - }, - "Attachment_1": { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "size": { - "type": "integer" - }, - "url": { - "type": "string" - }, - "proxy_url": { - "type": "string" - }, - "height": { - "type": "integer" - }, - "width": { - "type": "integer" - }, - "content_type": { - "type": "string" - }, - "message_id": { - "type": "string" - }, - "message": { - "$ref": "#/definitions/Message" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "filename", - "id", - "message", - "message_id", - "proxy_url", - "size", - "url" - ] - }, - "Reaction": { - "type": "object", - "properties": { - "count": { - "type": "integer" - }, - "emoji": { - "$ref": "#/definitions/PartialEmoji" - }, - "user_ids": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false, - "required": [ - "count", - "emoji", - "user_ids" - ] - }, - "PartialEmoji": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "animated": { - "type": "boolean" - } - }, - "additionalProperties": false, - "required": [ - "name" - ] - }, - "MessageType": { - "enum": [ - 0, - 1, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 19, - 2, - 20, - 255, - 3, - 4, - 41, - 42, - 43, - 5, - 50, - 6, - 63, - 7, - 8, - 9 - ], - "type": "number" - }, - "InteractionType": { - "enum": [ - 0, - 1, - 2 - ], - "type": "number" - }, - "MessageComponent": { - "type": "object", - "properties": { - "type": { - "type": "integer" - }, - "style": { - "type": "integer" - }, - "label": { - "type": "string" - }, - "emoji": { - "$ref": "#/definitions/PartialEmoji" - }, - "custom_id": { - "type": "string" - }, - "url": { - "type": "string" - }, - "disabled": { - "type": "boolean" - }, - "components": { - "type": "array", - "items": { - "$ref": "#/definitions/MessageComponent" - } - } - }, - "additionalProperties": false, - "required": [ - "components", - "type" - ] - }, - "VoiceState": { - "type": "object", - "properties": { - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "channel_id": { - "type": "string" - }, - "channel": { - "$ref": "#/definitions/Channel" - }, - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "member": { - "$ref": "#/definitions/Member" - }, - "session_id": { - "type": "string" - }, - "token": { - "type": "string" - }, - "deaf": { - "type": "boolean" - }, - "mute": { - "type": "boolean" - }, - "self_deaf": { - "type": "boolean" - }, - "self_mute": { - "type": "boolean" - }, - "self_stream": { - "type": "boolean" - }, - "self_video": { - "type": "boolean" - }, - "suppress": { - "type": "boolean" - }, - "request_to_speak_timestamp": { - "type": "string", - "format": "date-time" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "channel", - "channel_id", - "deaf", - "guild_id", - "id", - "member", - "mute", - "self_deaf", - "self_mute", - "self_video", - "session_id", - "suppress", - "token", - "user", - "user_id" - ] - }, - "ReadState": { - "type": "object", - "properties": { - "channel_id": { - "type": "string" - }, - "channel": { - "$ref": "#/definitions/Channel" - }, - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "last_message_id": { - "type": "string" - }, - "public_ack": { - "type": "string" - }, - "notifications_cursor": { - "type": "string" - }, - "last_pin_timestamp": { - "type": "string", - "format": "date-time" - }, - "mention_count": { - "type": "integer" - }, - "manual": { - "type": "boolean" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "channel", - "channel_id", - "id", - "last_message_id", - "manual", - "mention_count", - "notifications_cursor", - "public_ack", - "user", - "user_id" - ] - }, - "Ban": { - "type": "object", - "properties": { - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "executor_id": { - "type": "string" - }, - "executor": { - "$ref": "#/definitions/User" - }, - "ip": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "executor", - "executor_id", - "guild", - "guild_id", - "id", - "ip", - "user", - "user_id" - ] - }, - "Template": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "usage_count": { - "type": "integer" - }, - "creator_id": { - "type": "string" - }, - "creator": { - "$ref": "#/definitions/User" - }, - "created_at": { - "type": "string", - "format": "date-time" - }, - "updated_at": { - "type": "string", - "format": "date-time" - }, - "source_guild_id": { - "type": "string" - }, - "source_guild": { - "$ref": "#/definitions/Guild" - }, - "serialized_source_guild": { - "$ref": "#/definitions/Guild" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "code", - "created_at", - "creator", - "creator_id", - "id", - "name", - "serialized_source_guild", - "source_guild", - "source_guild_id", - "updated_at" - ] - }, - "Emoji": { - "type": "object", - "properties": { - "animated": { - "type": "boolean" - }, - "available": { - "type": "boolean" - }, - "guild_id": { - "type": "string" - }, - "guild": { - "$ref": "#/definitions/Guild" - }, - "user_id": { - "type": "string" - }, - "user": { - "$ref": "#/definitions/User" - }, - "managed": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "require_colons": { - "type": "boolean" - }, - "roles": { - "type": "array", - "items": { - "type": "string" - } - }, - "groups": { - "type": "array", - "items": { - "type": "string" - } - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "animated", - "available", - "groups", - "guild", - "guild_id", - "id", - "managed", - "name", - "require_colons", - "roles", - "user", - "user_id" - ] - }, - "GuildWelcomeScreen": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "welcome_channels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "emoji_id": { - "type": "string" - }, - "emoji_name": { - "type": "string" - }, - "channel_id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "channel_id", - "description" - ] - } - } - }, - "additionalProperties": false, - "required": [ - "description", - "enabled", - "welcome_channels" - ] - }, - "GuildMessagesSearchMessage": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/MessageType" - }, - "content": { - "type": "string" - }, - "channel_id": { - "type": "string" - }, - "author": { - "$ref": "#/definitions/PublicUser" - }, - "attachments": { - "type": "array", - "items": { - "$ref": "#/definitions/Attachment_1" - } - }, - "embeds": { - "type": "array", - "items": { - "$ref": "#/definitions/Embed" - } - }, - "mentions": { - "type": "array", - "items": { - "$ref": "#/definitions/PublicUser" - } - }, - "mention_roles": { - "type": "array", - "items": { - "$ref": "#/definitions/Role" - } - }, - "pinned": { - "type": "boolean" - }, - "mention_everyone": { - "type": "boolean" - }, - "tts": { - "type": "boolean" - }, - "timestamp": { - "type": "string" - }, - "edited_timestamp": { - "type": [ - "null", - "string" - ] - }, - "flags": { - "type": "integer" - }, - "components": { - "type": "array", - "items": {} - }, - "hit": { - "type": "boolean", - "enum": [ - true - ] - } - }, - "additionalProperties": false, - "required": [ - "attachments", - "author", - "channel_id", - "components", - "edited_timestamp", - "embeds", - "flags", - "hit", - "id", - "mention_roles", - "mentions", - "pinned", - "timestamp", - "tts", - "type" - ] - }, - "PublicUser": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "premium_since": { - "type": "string", - "format": "date-time" - }, - "username": { - "type": "string" - }, - "discriminator": { - "type": "string" - }, - "public_flags": { - "type": "integer" - }, - "avatar": { - "type": "string" - }, - "accent_color": { - "type": "integer" - }, - "banner": { - "type": "string" - }, - "bio": { - "type": "string" - }, - "bot": { - "type": "boolean" - }, - "premium_type": { - "type": "integer" - }, - "theme_colors": { - "type": "array", - "items": { - "type": "integer" - } - }, - "pronouns": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "bio", - "bot", - "discriminator", - "id", - "premium_since", - "premium_type", - "public_flags", - "username" - ] - }, - "GuildVanityUrl": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "uses": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "code", - "uses" - ] - }, - "GuildVanityUrlNoInvite": { - "type": "object", - "properties": { - "code": { - "type": "null" - } - }, - "additionalProperties": false, - "required": [ - "code" - ] - }, - "ClientStatus": { - "type": "object", - "properties": { - "desktop": { - "type": "string" - }, - "mobile": { - "type": "string" - }, - "web": { - "type": "string" - } - }, - "additionalProperties": false - }, - "Snowflake": { - "description": "A container for useful snowflake-related methods.", - "type": "object", - "additionalProperties": false - }, - "TenorGifResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - }, - "url": { - "type": "string" - }, - "src": { - "type": "string" - }, - "gif_src": { - "type": "string" - }, - "width": { - "type": "integer" - }, - "height": { - "type": "integer" - }, - "preview": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "gif_src", - "height", - "id", - "preview", - "src", - "title", - "url", - "width" - ] - }, - "BackupCode": { - "type": "object", - "properties": { - "user": { - "$ref": "#/definitions/User" - }, - "code": { - "type": "string" - }, - "consumed": { - "type": "boolean" - }, - "expired": { - "type": "boolean" - }, - "id": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "code", - "consumed", - "expired", - "id", - "user" - ] - }, - "APIGuild": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "reload": { - "description": "Reloads entity data from the database.", - "type": "object", - "additionalProperties": false - }, - "id": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "parent": { - "type": "string" - }, - "owner_id": { - "type": "string" - }, - "nsfw": { - "type": "boolean" - }, - "invites": { - "type": "array", - "items": { - "$ref": "#/definitions/Invite" - } - }, - "voice_states": { - "type": "array", - "items": { - "$ref": "#/definitions/VoiceState" - } - }, - "webhooks": { - "type": "array", - "items": { - "$ref": "#/definitions/Webhook" - } - }, - "toJSON": { - "type": "object", - "additionalProperties": false - }, - "_do_validate": { - "type": "object", - "additionalProperties": false - }, - "assign": { - "type": "object", - "additionalProperties": false - }, - "hasId": { - "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", - "type": "object", - "additionalProperties": false - }, - "save": { - "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", - "type": "object", - "additionalProperties": false - }, - "remove": { - "description": "Removes current entity from the database.", - "type": "object", - "additionalProperties": false - }, - "softRemove": { - "description": "Records the delete date of current entity.", - "type": "object", - "additionalProperties": false - }, - "recover": { - "description": "Recovers a given entity in the database.", - "type": "object", - "additionalProperties": false - }, - "roles": { - "type": "array", - "items": { - "$ref": "#/definitions/Role" - } - }, - "banner": { - "type": "string" - }, - "unavailable": { - "type": "boolean" - }, - "channels": { - "type": "array", - "items": { - "$ref": "#/definitions/Channel" - } - }, - "region": { - "type": "string" - }, - "system_channel_id": { - "type": "string" - }, - "rules_channel_id": { - "type": "string" - }, - "afk_timeout": { - "type": "integer" - }, - "explicit_content_filter": { - "type": "integer" - }, - "afk_channel_id": { - "type": "string" - }, - "bans": { - "type": "array", - "items": { - "$ref": "#/definitions/Ban" - } - }, - "default_message_notifications": { - "type": "integer" - }, - "description": { - "type": "string" - }, - "discovery_splash": { - "type": "string" - }, - "features": { - "type": "array", - "items": { - "type": "string" - } - }, - "primary_category_id": { - "type": "string" - }, - "large": { - "type": "boolean" - }, - "max_members": { - "type": "integer" - }, - "max_presences": { - "type": "integer" - }, - "max_video_channel_users": { - "type": "integer" - }, - "member_count": { - "type": "integer" - }, - "presence_count": { - "type": "integer" - }, - "members": { - "type": "array", - "items": { - "$ref": "#/definitions/Member" - } - }, - "template_id": { - "type": "string" - }, - "emojis": { - "type": "array", - "items": { - "$ref": "#/definitions/Emoji" - } - }, - "stickers": { - "type": "array", - "items": { - "$ref": "#/definitions/Sticker" - } - }, - "mfa_level": { - "type": "integer" - }, - "preferred_locale": { - "type": "string" - }, - "premium_subscription_count": { - "type": "integer" - }, - "premium_tier": { - "type": "integer" - }, - "public_updates_channel_id": { - "type": "string" - }, - "splash": { - "type": "string" - }, - "system_channel_flags": { - "type": "integer" - }, - "verification_level": { - "type": "integer" - }, - "welcome_screen": { - "$ref": "#/definitions/GuildWelcomeScreen" - }, - "widget_channel_id": { - "type": "string" - }, - "widget_enabled": { - "type": "boolean" - }, - "nsfw_level": { - "type": "integer" - }, - "permissions": { - "type": "integer" - }, - "premium_progress_bar_enabled": { - "type": "boolean" - } - }, - "additionalProperties": false, - "required": [ - "_do_validate", - "assign", - "bans", - "channels", - "emojis", - "features", - "hasId", - "id", - "invites", - "members", - "name", - "nsfw", - "premium_progress_bar_enabled", - "public_updates_channel_id", - "recover", - "reload", - "remove", - "roles", - "save", - "softRemove", - "stickers", - "toJSON", - "unavailable", - "voice_states", - "webhooks", - "welcome_screen", - "widget_enabled" - ] - }, - "DmChannelDTO": { - "type": "object", - "properties": { - "icon": { - "type": [ - "null", - "string" - ] - }, - "id": { - "type": "string" - }, - "last_message_id": { - "type": [ - "null", - "string" - ] - }, - "name": { - "type": [ - "null", - "string" - ] - }, - "origin_channel_id": { - "type": [ - "null", - "string" - ] - }, - "owner_id": { - "type": "string" - }, - "recipients": { - "type": "array", - "items": { - "$ref": "#/definitions/MinimalPublicUserDTO" - } - }, - "type": { - "type": "integer" - } - }, - "additionalProperties": false, - "required": [ - "icon", - "id", - "last_message_id", - "name", - "origin_channel_id", - "recipients", - "type" - ] - }, - "MinimalPublicUserDTO": { - "type": "object", - "properties": { - "avatar": { - "type": [ - "null", - "string" - ] - }, - "discriminator": { - "type": "string" - }, - "id": { - "type": "string" - }, - "public_flags": { - "type": "integer" - }, - "username": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "discriminator", - "id", - "public_flags", - "username" - ] - }, - "Categories": { - "type": "object", - "properties": { - "id": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "localizations": { - "type": "string" - }, - "is_primary": { - "type": "boolean" - } - }, - "additionalProperties": false, - "required": [ - "id", - "is_primary", - "localizations", - "name" - ] - }, - "GuildVoiceRegion": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "custom": { - "type": "boolean" - }, - "deprecated": { - "type": "boolean" - }, - "optimal": { - "type": "boolean" - } - }, - "additionalProperties": false, - "required": [ - "custom", - "deprecated", - "id", - "name", - "optimal" - ] - }, - "UserLimits": { - "type": "object", - "properties": { - "maxGuilds": { - "type": "integer", - "default": 1048576 - }, - "maxUsername": { - "type": "integer", - "default": 32 - }, - "maxFriends": { - "type": "integer", - "default": 5000 - } - }, - "additionalProperties": false, - "required": [ - "maxFriends", - "maxGuilds", - "maxUsername" - ] - }, - "GuildLimits": { - "type": "object", - "properties": { - "maxRoles": { - "type": "integer", - "default": 1000 - }, - "maxEmojis": { - "type": "integer", - "default": 2000 - }, - "maxMembers": { - "type": "integer", - "default": 25000000 - }, - "maxChannels": { - "type": "integer", - "default": 65535 - }, - "maxChannelsInCategory": { - "type": "integer", - "default": 65535 - } - }, - "additionalProperties": false, - "required": [ - "maxChannels", - "maxChannelsInCategory", - "maxEmojis", - "maxMembers", - "maxRoles" - ] - }, - "MessageLimits": { - "type": "object", - "properties": { - "maxCharacters": { - "type": "integer", - "default": 1048576 - }, - "maxTTSCharacters": { - "type": "integer", - "default": 160 - }, - "maxReactions": { - "type": "integer", - "default": 2048 - }, - "maxAttachmentSize": { - "type": "integer", - "default": 1073741824 - }, - "maxBulkDelete": { - "type": "integer", - "default": 1000 - }, - "maxEmbedDownloadSize": { - "type": "integer", - "default": 5242880 - } - }, - "additionalProperties": false, - "required": [ - "maxAttachmentSize", - "maxBulkDelete", - "maxCharacters", - "maxEmbedDownloadSize", - "maxReactions", - "maxTTSCharacters" - ] - }, - "ChannelLimits": { - "type": "object", - "properties": { - "maxPins": { - "type": "integer", - "default": 500 - }, - "maxTopic": { - "type": "integer", - "default": 1024 - }, - "maxWebhooks": { - "type": "integer", - "default": 100 - } - }, - "additionalProperties": false, - "required": [ - "maxPins", - "maxTopic", - "maxWebhooks" - ] - }, - "RateLimits": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean", - "default": false - }, - "ip": { - "$ref": "#/definitions/RateLimitOptions" - }, - "global": { - "$ref": "#/definitions/RateLimitOptions" - }, - "error": { - "$ref": "#/definitions/RateLimitOptions" - }, - "routes": { - "$ref": "#/definitions/RouteRateLimit" - } - }, - "additionalProperties": false, - "required": [ - "enabled", - "error", - "global", - "ip", - "routes" - ] - }, - "RateLimitOptions": { - "type": "object", - "properties": { - "bot": { - "type": "integer" - }, - "count": { - "type": "integer" - }, - "window": { - "type": "integer" - }, - "onyIp": { - "type": "boolean" - } - }, - "additionalProperties": false, - "required": [ - "count", - "window" - ] - }, - "RouteRateLimit": { - "type": "object", - "properties": { - "guild": { - "$ref": "#/definitions/RateLimitOptions" - }, - "webhook": { - "$ref": "#/definitions/RateLimitOptions" - }, - "channel": { - "$ref": "#/definitions/RateLimitOptions" - }, - "auth": {} - }, - "additionalProperties": false, - "required": [ - "auth", - "channel", - "guild", - "webhook" - ] - }, - "GlobalRateLimits": { - "type": "object", - "properties": { - "register": { - "$ref": "#/definitions/GlobalRateLimit" - }, - "sendMessage": { - "$ref": "#/definitions/GlobalRateLimit" - } - }, - "additionalProperties": false, - "required": [ - "register", - "sendMessage" - ] - }, - "GlobalRateLimit": { - "type": "object", - "properties": { - "limit": { - "type": "integer", - "default": 100 - }, - "window": { - "type": "integer", - "default": 3600000 - }, - "enabled": { - "type": "boolean", - "default": true - } - }, - "additionalProperties": false, - "required": [ - "enabled", - "limit", - "window" - ] - }, - "PublicConnectedAccount": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "verified": { - "type": "boolean" - } - }, - "additionalProperties": false, - "required": [ - "name", - "type" - ] - }, - "UserProfile": { - "type": "object", - "properties": { - "accent_color": { - "type": "integer" - }, - "banner": { - "type": "string" - }, - "bio": { - "type": "string" - }, - "theme_colors": { - "type": "array", - "items": { - "type": "integer" - } - }, - "pronouns": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "bio" - ] - }, "TokenResponse": { "type": "object", "properties": { @@ -497641,6 +496104,4257 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, + "TokenResponse": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "settings": { + "$ref": "#/definitions/UserSettings" + } + }, + "additionalProperties": false, + "required": [ + "settings", + "token" + ] + }, + "MFAResponse": { + "type": "object", + "properties": { + "ticket": { + "type": "string" + }, + "mfa": { + "type": "boolean", + "enum": [ + true + ] + }, + "sms": { + "type": "boolean", + "enum": [ + false + ] + }, + "token": { + "type": "null" + } + }, + "additionalProperties": false, + "required": [ + "mfa", + "sms", + "ticket", + "token" + ] + }, + "WebAuthnResponse": { + "type": "object", + "properties": { + "webauthn": { + "type": "string" + }, + "ticket": { + "type": "string" + }, + "mfa": { + "type": "boolean", + "enum": [ + true + ] + }, + "sms": { + "type": "boolean", + "enum": [ + false + ] + }, + "token": { + "type": "null" + } + }, + "additionalProperties": false, + "required": [ + "mfa", + "sms", + "ticket", + "token", + "webauthn" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" + }, + "UserRelationshipsResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/RelationshipType" + }, + "nickname": { + "type": "null" + }, + "user": { + "$ref": "#/definitions/PublicUser" + } + }, + "additionalProperties": false, + "required": [ + "id", + "nickname", + "type", + "user" + ], + "definitions": { + "ChannelPermissionOverwriteType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "number" + }, + "ConnectedAccountTokenData": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + }, + "token_type": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "refresh_token": { + "type": "string" + }, + "expires_in": { + "type": "integer" + }, + "expires_at": { + "type": "integer" + }, + "fetched_at": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "access_token", + "fetched_at" + ] + }, + "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" + } + } + }, + "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" + }, + "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 + }, + "ChannelOverride": { + "type": "object", + "properties": { + "message_notifications": { + "type": "integer" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + }, + "channel_id": { + "type": [ + "null", + "string" + ] + } + }, + "additionalProperties": false, + "required": [ + "channel_id", + "message_notifications", + "mute_config", + "muted" + ] + }, + "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" + ] + }, + "GenerateWebAuthnCredentialsSchema": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "password" + ] + }, + "CreateWebAuthnCredentialSchema": { + "type": "object", + "properties": { + "credential": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ticket": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "credential", + "name", + "ticket" + ] + }, + "APIErrorResponse": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "errors": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "_errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "code": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "code", + "message" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "_errors" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "code", + "errors", + "message" + ] + }, + "CaptchaRequiredResponse": { + "type": "object", + "properties": { + "captcha_key": { + "type": "string" + }, + "captcha_sitekey": { + "type": "string" + }, + "captcha_service": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "captcha_key", + "captcha_service", + "captcha_sitekey" + ] + }, + "Guild": { + "type": "object", + "properties": { + "afk_channel_id": { + "type": "string" + }, + "afk_channel": { + "$ref": "#/definitions/Channel" + }, + "afk_timeout": { + "type": "integer" + }, + "bans": { + "type": "array", + "items": { + "$ref": "#/definitions/Ban" + } + }, + "banner": { + "type": "string" + }, + "default_message_notifications": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "discovery_splash": { + "type": "string" + }, + "explicit_content_filter": { + "type": "integer" + }, + "features": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "primary_category_id": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "large": { + "type": "boolean", + "default": false + }, + "max_members": { + "type": "integer" + }, + "max_presences": { + "type": "integer" + }, + "max_video_channel_users": { + "type": "integer" + }, + "member_count": { + "type": "integer" + }, + "presence_count": { + "type": "integer" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/Member" + } + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "channels": { + "type": "array", + "items": { + "$ref": "#/definitions/Channel" + } + }, + "template_id": { + "type": "string" + }, + "template": { + "$ref": "#/definitions/Template" + }, + "emojis": { + "type": "array", + "items": { + "$ref": "#/definitions/Emoji" + } + }, + "stickers": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "invites": { + "type": "array", + "items": { + "$ref": "#/definitions/Invite" + } + }, + "voice_states": { + "type": "array", + "items": { + "$ref": "#/definitions/VoiceState" + } + }, + "webhooks": { + "type": "array", + "items": { + "$ref": "#/definitions/Webhook" + } + }, + "mfa_level": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "preferred_locale": { + "type": "string" + }, + "premium_subscription_count": { + "type": "integer" + }, + "premium_tier": { + "type": "integer" + }, + "public_updates_channel_id": { + "type": "string" + }, + "public_updates_channel": { + "$ref": "#/definitions/Channel" + }, + "rules_channel_id": { + "type": "string" + }, + "rules_channel": { + "type": "string" + }, + "region": { + "type": "string" + }, + "splash": { + "type": "string" + }, + "system_channel_id": { + "type": "string" + }, + "system_channel": { + "$ref": "#/definitions/Channel" + }, + "system_channel_flags": { + "type": "integer" + }, + "unavailable": { + "type": "boolean", + "default": false + }, + "verification_level": { + "type": "integer" + }, + "welcome_screen": { + "$ref": "#/definitions/GuildWelcomeScreen" + }, + "widget_channel_id": { + "type": "string" + }, + "widget_channel": { + "$ref": "#/definitions/Channel" + }, + "widget_enabled": { + "type": "boolean", + "default": true + }, + "nsfw_level": { + "type": "integer" + }, + "nsfw": { + "type": "boolean", + "default": false + }, + "parent": { + "type": "string" + }, + "permissions": { + "type": "integer" + }, + "premium_progress_bar_enabled": { + "type": "boolean", + "default": false + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "bans", + "channels", + "emojis", + "features", + "id", + "invites", + "members", + "name", + "nsfw", + "premium_progress_bar_enabled", + "public_updates_channel_id", + "roles", + "stickers", + "template", + "unavailable", + "voice_states", + "webhooks", + "welcome_screen", + "widget_enabled" + ] + }, + "Channel": { + "type": "object", + "properties": { + "created_at": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": "string" + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "type": { + "$ref": "#/definitions/ChannelType" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/definitions/Recipient" + } + }, + "last_message_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "parent_id": { + "type": "string" + }, + "parent": { + "$ref": "#/definitions/Channel" + }, + "owner_id": { + "type": "string" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "last_pin_timestamp": { + "type": "integer" + }, + "default_auto_archive_duration": { + "type": "integer" + }, + "position": { + "type": "integer" + }, + "permission_overwrites": { + "type": "array", + "items": { + "$ref": "#/definitions/ChannelPermissionOverwrite" + } + }, + "video_quality_mode": { + "type": "integer" + }, + "bitrate": { + "type": "integer" + }, + "user_limit": { + "type": "integer" + }, + "nsfw": { + "type": "boolean", + "default": false + }, + "rate_limit_per_user": { + "type": "integer" + }, + "topic": { + "type": "string" + }, + "invites": { + "type": "array", + "items": { + "$ref": "#/definitions/Invite" + } + }, + "retention_policy_id": { + "type": "string" + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/definitions/Message" + } + }, + "voice_states": { + "type": "array", + "items": { + "$ref": "#/definitions/VoiceState" + } + }, + "read_states": { + "type": "array", + "items": { + "$ref": "#/definitions/ReadState" + } + }, + "webhooks": { + "type": "array", + "items": { + "$ref": "#/definitions/Webhook" + } + }, + "flags": { + "type": "integer", + "default": 0 + }, + "default_thread_rate_limit_per_user": { + "type": "integer", + "default": 0 + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "created_at", + "default_thread_rate_limit_per_user", + "flags", + "guild", + "id", + "nsfw", + "owner", + "parent_id", + "type" + ] + }, + "ChannelType": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 2, + 255, + 3, + 33, + 34, + 35, + 4, + 5, + 6, + 64, + 7, + 8, + 9 + ], + "type": "number" + }, + "Recipient": { + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "closed": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "channel_id", + "closed", + "id", + "user", + "user_id" + ] + }, + "User": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "discriminator": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "accent_color": { + "type": "integer" + }, + "banner": { + "type": "string" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "desktop": { + "type": "boolean", + "default": false + }, + "mobile": { + "type": "boolean", + "default": false + }, + "premium": { + "type": "boolean" + }, + "premium_type": { + "type": "integer" + }, + "bot": { + "type": "boolean", + "default": false + }, + "bio": { + "type": "string", + "default": "" + }, + "system": { + "type": "boolean", + "default": false + }, + "nsfw_allowed": { + "type": "boolean", + "default": true + }, + "mfa_enabled": { + "type": "boolean", + "default": false + }, + "webauthn_enabled": { + "type": "boolean", + "default": false + }, + "totp_secret": { + "type": "string", + "default": "" + }, + "totp_last_ticket": { + "type": "string", + "default": "" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "premium_since": { + "type": "string", + "format": "date-time" + }, + "verified": { + "type": "boolean" + }, + "disabled": { + "type": "boolean", + "default": false + }, + "deleted": { + "type": "boolean", + "default": false + }, + "email": { + "type": "string" + }, + "flags": { + "type": "integer", + "default": 0 + }, + "public_flags": { + "type": "integer", + "default": 0 + }, + "purchased_flags": { + "type": "integer", + "default": 0 + }, + "premium_usage_flags": { + "type": "integer", + "default": 0 + }, + "rights": { + "type": "string" + }, + "sessions": { + "type": "array", + "items": { + "$ref": "#/definitions/Session" + } + }, + "relationships": { + "type": "array", + "items": { + "$ref": "#/definitions/Relationship" + } + }, + "connected_accounts": { + "type": "array", + "items": { + "$ref": "#/definitions/ConnectedAccount" + } + }, + "data": { + "type": "object", + "properties": { + "valid_tokens_since": { + "type": "string", + "format": "date-time" + }, + "hash": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "valid_tokens_since" + ] + }, + "fingerprints": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "settings": { + "$ref": "#/definitions/UserSettings" + }, + "extended_settings": { + "type": "string", + "default": "{}" + }, + "security_keys": { + "type": "array", + "items": { + "$ref": "#/definitions/SecurityKey" + } + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "bio", + "bot", + "connected_accounts", + "created_at", + "data", + "deleted", + "desktop", + "disabled", + "discriminator", + "extended_settings", + "fingerprints", + "flags", + "id", + "mfa_enabled", + "mobile", + "nsfw_allowed", + "premium", + "premium_since", + "premium_type", + "premium_usage_flags", + "public_flags", + "purchased_flags", + "relationships", + "rights", + "security_keys", + "sessions", + "settings", + "system", + "username", + "verified", + "webauthn_enabled" + ] + }, + "Session": { + "type": "object", + "properties": { + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "session_id": { + "type": "string" + }, + "activities": { + "type": "array", + "items": { + "$ref": "#/definitions/Activity" + } + }, + "client_info": { + "type": "object", + "properties": { + "client": { + "type": "string" + }, + "os": { + "type": "string" + }, + "version": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "client", + "os", + "version" + ] + }, + "status": { + "$ref": "#/definitions/Status" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "activities", + "client_info", + "id", + "session_id", + "status", + "user", + "user_id" + ] + }, + "Relationship": { + "type": "object", + "properties": { + "from_id": { + "type": "string" + }, + "from": { + "$ref": "#/definitions/User" + }, + "to_id": { + "type": "string" + }, + "to": { + "$ref": "#/definitions/User" + }, + "nickname": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/RelationshipType" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "from", + "from_id", + "id", + "to", + "to_id", + "type" + ] + }, + "RelationshipType": { + "enum": [ + 1, + 2, + 3, + 4 + ], + "type": "number" + }, + "ConnectedAccount": { + "type": "object", + "properties": { + "external_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "friend_sync": { + "type": "boolean", + "default": false + }, + "name": { + "type": "string" + }, + "revoked": { + "type": "boolean", + "default": false + }, + "show_activity": { + "type": "integer", + "default": 0 + }, + "type": { + "type": "string" + }, + "verified": { + "type": "boolean", + "default": true + }, + "visibility": { + "type": "integer", + "default": 0 + }, + "integrations": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "metadata_": {}, + "metadata_visibility": { + "type": "integer", + "default": 0 + }, + "two_way_link": { + "type": "boolean", + "default": false + }, + "token_data": { + "anyOf": [ + { + "$ref": "#/definitions/ConnectedAccountTokenData" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "external_id", + "id", + "name", + "type", + "user", + "user_id" + ] + }, + "UserSettings": { + "type": "object", + "properties": { + "index": { + "type": "string" + }, + "afk_timeout": { + "type": "integer", + "default": 3600 + }, + "allow_accessibility_detection": { + "type": "boolean", + "default": true + }, + "animate_emoji": { + "type": "boolean", + "default": true + }, + "animate_stickers": { + "type": "integer", + "default": 0 + }, + "contact_sync_enabled": { + "type": "boolean", + "default": false + }, + "convert_emoticons": { + "type": "boolean", + "default": false + }, + "custom_status": { + "anyOf": [ + { + "$ref": "#/definitions/CustomStatus" + }, + { + "type": "null" + } + ], + "default": null + }, + "default_guilds_restricted": { + "type": "boolean", + "default": false + }, + "detect_platform_accounts": { + "type": "boolean", + "default": false + }, + "developer_mode": { + "type": "boolean", + "default": true + }, + "disable_games_tab": { + "type": "boolean", + "default": true + }, + "enable_tts_command": { + "type": "boolean", + "default": false + }, + "explicit_content_filter": { + "type": "integer", + "default": 0 + }, + "friend_source_flags": { + "$ref": "#/definitions/FriendSourceFlags" + }, + "gateway_connected": { + "type": "boolean", + "default": false + }, + "gif_auto_play": { + "type": "boolean", + "default": false + }, + "guild_folders": { + "type": "array", + "items": { + "$ref": "#/definitions/GuildFolder" + }, + "default": [] + }, + "guild_positions": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "inline_attachment_media": { + "type": "boolean", + "default": true + }, + "inline_embed_media": { + "type": "boolean", + "default": true + }, + "locale": { + "type": "string", + "default": "en-US" + }, + "message_display_compact": { + "type": "boolean", + "default": false + }, + "native_phone_integration_enabled": { + "type": "boolean", + "default": true + }, + "render_embeds": { + "type": "boolean", + "default": true + }, + "render_reactions": { + "type": "boolean", + "default": true + }, + "restricted_guilds": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "show_current_game": { + "type": "boolean", + "default": true + }, + "status": { + "enum": [ + "dnd", + "idle", + "invisible", + "offline", + "online" + ], + "type": "string", + "default": "online" + }, + "stream_notifications_enabled": { + "type": "boolean", + "default": false + }, + "theme": { + "enum": [ + "dark", + "light" + ], + "type": "string", + "default": "dark" + }, + "timezone_offset": { + "type": "integer", + "default": 0 + } + }, + "additionalProperties": false, + "required": [ + "afk_timeout", + "allow_accessibility_detection", + "animate_emoji", + "animate_stickers", + "contact_sync_enabled", + "convert_emoticons", + "custom_status", + "default_guilds_restricted", + "detect_platform_accounts", + "developer_mode", + "disable_games_tab", + "enable_tts_command", + "explicit_content_filter", + "friend_source_flags", + "gateway_connected", + "gif_auto_play", + "guild_folders", + "guild_positions", + "index", + "inline_attachment_media", + "inline_embed_media", + "locale", + "message_display_compact", + "native_phone_integration_enabled", + "render_embeds", + "render_reactions", + "restricted_guilds", + "show_current_game", + "status", + "stream_notifications_enabled", + "theme", + "timezone_offset" + ] + }, + "SecurityKey": { + "type": "object", + "properties": { + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "key_id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "counter": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "counter", + "id", + "key_id", + "name", + "public_key", + "user", + "user_id" + ] + }, + "ChannelPermissionOverwrite": { + "type": "object", + "properties": { + "allow": { + "type": "string" + }, + "deny": { + "type": "string" + }, + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelPermissionOverwriteType" + } + }, + "additionalProperties": false, + "required": [ + "allow", + "deny", + "id", + "type" + ] + }, + "Invite": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "temporary": { + "type": "boolean" + }, + "uses": { + "type": "integer" + }, + "max_uses": { + "type": "integer" + }, + "max_age": { + "type": "integer" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "expires_at": { + "type": "string", + "format": "date-time" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "inviter_id": { + "type": "string" + }, + "inviter": { + "$ref": "#/definitions/User" + }, + "target_user_id": { + "type": "string" + }, + "target_user": { + "type": "string" + }, + "target_user_type": { + "type": "integer" + }, + "vanity_url": { + "type": "boolean" + }, + "flags": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "channel_id", + "code", + "created_at", + "flags", + "guild", + "guild_id", + "inviter", + "max_age", + "max_uses", + "target_user_id", + "temporary", + "uses" + ] + }, + "Message": { + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "author_id": { + "type": "string" + }, + "author": { + "$ref": "#/definitions/User" + }, + "member_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/Member" + }, + "webhook_id": { + "type": "string" + }, + "webhook": { + "$ref": "#/definitions/Webhook" + }, + "application_id": { + "type": "string" + }, + "application": { + "$ref": "#/definitions/Application" + }, + "content": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "edited_timestamp": { + "type": "string", + "format": "date-time" + }, + "tts": { + "type": "boolean" + }, + "mention_everyone": { + "type": "boolean" + }, + "mentions": { + "type": "array", + "items": { + "$ref": "#/definitions/User" + } + }, + "mention_roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "mention_channels": { + "type": "array", + "items": { + "$ref": "#/definitions/Channel" + } + }, + "sticker_items": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "attachments": { + "type": "array", + "items": { + "$ref": "#/definitions/Attachment_1" + } + }, + "embeds": { + "type": "array", + "items": { + "$ref": "#/definitions/Embed" + } + }, + "reactions": { + "type": "array", + "items": { + "$ref": "#/definitions/Reaction" + } + }, + "nonce": { + "type": "string" + }, + "pinned": { + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/MessageType" + }, + "activity": { + "type": "object", + "properties": { + "type": { + "type": "integer" + }, + "party_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "party_id", + "type" + ] + }, + "flags": { + "type": "integer" + }, + "message_reference": { + "type": "object", + "properties": { + "message_id": { + "type": "string" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "message_id" + ] + }, + "referenced_message": { + "$ref": "#/definitions/Message" + }, + "interaction": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/InteractionType" + }, + "name": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "name", + "type", + "user_id" + ] + }, + "components": { + "type": "array", + "items": { + "$ref": "#/definitions/MessageComponent" + } + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "embeds", + "id", + "mention_channels", + "mention_roles", + "mentions", + "reactions", + "timestamp", + "type" + ] + }, + "Member": { + "type": "object", + "properties": { + "index": { + "type": "string" + }, + "id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "nick": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "joined_at": { + "type": "string", + "format": "date-time" + }, + "premium_since": { + "type": "integer" + }, + "deaf": { + "type": "boolean" + }, + "mute": { + "type": "boolean" + }, + "pending": { + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/UserGuildSettings" + }, + "last_message_id": { + "type": "string" + }, + "joined_by": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "banner": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + }, + "communication_disabled_until": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "avatar", + "banner", + "bio", + "communication_disabled_until", + "deaf", + "guild", + "guild_id", + "id", + "index", + "joined_at", + "joined_by", + "mute", + "pending", + "roles", + "settings", + "user" + ] + }, + "Role": { + "type": "object", + "properties": { + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "color": { + "type": "integer" + }, + "hoist": { + "type": "boolean" + }, + "managed": { + "type": "boolean" + }, + "mentionable": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "string" + }, + "position": { + "type": "integer" + }, + "icon": { + "type": "string" + }, + "unicode_emoji": { + "type": "string" + }, + "tags": { + "type": "object", + "properties": { + "bot_id": { + "type": "string" + }, + "integration_id": { + "type": "string" + }, + "premium_subscriber": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "flags": { + "type": "integer" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "color", + "flags", + "guild", + "guild_id", + "hoist", + "id", + "managed", + "mentionable", + "name", + "permissions", + "position" + ] + }, + "UserGuildSettings": { + "type": "object", + "properties": { + "channel_overrides": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ChannelOverride" + } + }, + { + "type": "null" + } + ] + }, + "message_notifications": { + "type": "integer" + }, + "mobile_push": { + "type": "boolean" + }, + "mute_config": { + "anyOf": [ + { + "$ref": "#/definitions/MuteConfig" + }, + { + "type": "null" + } + ] + }, + "muted": { + "type": "boolean" + }, + "suppress_everyone": { + "type": "boolean" + }, + "suppress_roles": { + "type": "boolean" + }, + "version": { + "type": "integer" + }, + "guild_id": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "integer" + }, + "mute_scheduled_events": { + "type": "boolean" + }, + "hide_muted_channels": { + "type": "boolean" + }, + "notify_highlights": { + "type": "number", + "enum": [ + 0 + ] + } + }, + "additionalProperties": false, + "required": [ + "channel_overrides", + "flags", + "guild_id", + "hide_muted_channels", + "message_notifications", + "mobile_push", + "mute_config", + "mute_scheduled_events", + "muted", + "notify_highlights", + "suppress_everyone", + "suppress_roles", + "version" + ] + }, + "Webhook": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/WebhookType" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "token": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "application_id": { + "type": "string" + }, + "application": { + "$ref": "#/definitions/Application" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "source_guild_id": { + "type": "string" + }, + "source_guild": { + "$ref": "#/definitions/Guild" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "application", + "application_id", + "channel", + "channel_id", + "guild", + "guild_id", + "id", + "source_guild", + "source_guild_id", + "type", + "user", + "user_id" + ] + }, + "WebhookType": { + "enum": [ + 1, + 2, + 3 + ], + "type": "number" + }, + "Application": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "description": { + "type": "string" + }, + "summary": { + "type": "string", + "default": "" + }, + "type": { + "type": "object", + "properties": {}, + "additionalProperties": true + }, + "hook": { + "type": "boolean", + "default": true + }, + "bot_public": { + "type": "boolean", + "default": true + }, + "bot_require_code_grant": { + "type": "boolean", + "default": false + }, + "verify_key": { + "type": "string" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "flags": { + "type": "integer", + "default": 0 + }, + "redirect_uris": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "rpc_application_state": { + "type": "integer", + "default": 0 + }, + "store_application_state": { + "type": "integer", + "default": 1 + }, + "verification_state": { + "type": "integer", + "default": 1 + }, + "interactions_endpoint_url": { + "type": "string" + }, + "integration_public": { + "type": "boolean", + "default": true + }, + "integration_require_code_grant": { + "type": "boolean", + "default": false + }, + "discoverability_state": { + "type": "integer", + "default": 1 + }, + "discovery_eligibility_flags": { + "type": "integer", + "default": 2240 + }, + "bot": { + "$ref": "#/definitions/User" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "cover_image": { + "type": "string" + }, + "install_params": { + "type": "object", + "properties": { + "scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "permissions", + "scopes" + ] + }, + "terms_of_service_url": { + "type": "string" + }, + "privacy_policy_url": { + "type": "string" + }, + "team": { + "$ref": "#/definitions/Team" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "description", + "discoverability_state", + "discovery_eligibility_flags", + "flags", + "hook", + "id", + "integration_public", + "integration_require_code_grant", + "name", + "owner", + "redirect_uris", + "rpc_application_state", + "store_application_state", + "summary", + "verification_state", + "verify_key" + ] + }, + "Team": { + "type": "object", + "properties": { + "icon": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/TeamMember" + } + }, + "name": { + "type": "string" + }, + "owner_user_id": { + "type": "string" + }, + "owner_user": { + "$ref": "#/definitions/User" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "members", + "name", + "owner_user", + "owner_user_id" + ] + }, + "TeamMember": { + "type": "object", + "properties": { + "membership_state": { + "$ref": "#/definitions/TeamMemberState" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "team_id": { + "type": "string" + }, + "team": { + "$ref": "#/definitions/Team" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "membership_state", + "permissions", + "team", + "team_id", + "user", + "user_id" + ] + }, + "TeamMemberState": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "Sticker": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "available": { + "type": "boolean" + }, + "tags": { + "type": "string" + }, + "pack_id": { + "type": "string" + }, + "pack": { + "$ref": "#/definitions/StickerPack" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "type": { + "$ref": "#/definitions/StickerType" + }, + "format_type": { + "$ref": "#/definitions/StickerFormatType" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "format_type", + "id", + "name", + "pack", + "type" + ] + }, + "StickerPack": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "banner_asset_id": { + "type": "string" + }, + "stickers": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "cover_sticker_id": { + "type": "string" + }, + "cover_sticker": { + "$ref": "#/definitions/Sticker" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "name", + "stickers" + ] + }, + "StickerType": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "StickerFormatType": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "number" + }, + "Attachment_1": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "url": { + "type": "string" + }, + "proxy_url": { + "type": "string" + }, + "height": { + "type": "integer" + }, + "width": { + "type": "integer" + }, + "content_type": { + "type": "string" + }, + "message_id": { + "type": "string" + }, + "message": { + "$ref": "#/definitions/Message" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "filename", + "id", + "message", + "message_id", + "proxy_url", + "size", + "url" + ] + }, + "Reaction": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "user_ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "count", + "emoji", + "user_ids" + ] + }, + "PartialEmoji": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "animated": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "name" + ] + }, + "MessageType": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 19, + 2, + 20, + 255, + 3, + 4, + 41, + 42, + 43, + 5, + 50, + 6, + 63, + 7, + 8, + 9 + ], + "type": "number" + }, + "InteractionType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "number" + }, + "MessageComponent": { + "type": "object", + "properties": { + "type": { + "type": "integer" + }, + "style": { + "type": "integer" + }, + "label": { + "type": "string" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "custom_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "components": { + "type": "array", + "items": { + "$ref": "#/definitions/MessageComponent" + } + } + }, + "additionalProperties": false, + "required": [ + "components", + "type" + ] + }, + "VoiceState": { + "type": "object", + "properties": { + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "member": { + "$ref": "#/definitions/Member" + }, + "session_id": { + "type": "string" + }, + "token": { + "type": "string" + }, + "deaf": { + "type": "boolean" + }, + "mute": { + "type": "boolean" + }, + "self_deaf": { + "type": "boolean" + }, + "self_mute": { + "type": "boolean" + }, + "self_stream": { + "type": "boolean" + }, + "self_video": { + "type": "boolean" + }, + "suppress": { + "type": "boolean" + }, + "request_to_speak_timestamp": { + "type": "string", + "format": "date-time" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "channel_id", + "deaf", + "guild_id", + "id", + "member", + "mute", + "self_deaf", + "self_mute", + "self_video", + "session_id", + "suppress", + "token", + "user", + "user_id" + ] + }, + "ReadState": { + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "last_message_id": { + "type": "string" + }, + "public_ack": { + "type": "string" + }, + "notifications_cursor": { + "type": "string" + }, + "last_pin_timestamp": { + "type": "string", + "format": "date-time" + }, + "mention_count": { + "type": "integer" + }, + "manual": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "channel_id", + "id", + "last_message_id", + "manual", + "mention_count", + "notifications_cursor", + "public_ack", + "user", + "user_id" + ] + }, + "Ban": { + "type": "object", + "properties": { + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "executor_id": { + "type": "string" + }, + "executor": { + "$ref": "#/definitions/User" + }, + "ip": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "executor", + "executor_id", + "guild", + "guild_id", + "id", + "ip", + "user", + "user_id" + ] + }, + "Template": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "usage_count": { + "type": "integer" + }, + "creator_id": { + "type": "string" + }, + "creator": { + "$ref": "#/definitions/User" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + }, + "source_guild_id": { + "type": "string" + }, + "source_guild": { + "$ref": "#/definitions/Guild" + }, + "serialized_source_guild": { + "$ref": "#/definitions/Guild" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "code", + "created_at", + "creator", + "creator_id", + "id", + "name", + "serialized_source_guild", + "source_guild", + "source_guild_id", + "updated_at" + ] + }, + "Emoji": { + "type": "object", + "properties": { + "animated": { + "type": "boolean" + }, + "available": { + "type": "boolean" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "managed": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "require_colons": { + "type": "boolean" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "animated", + "available", + "groups", + "guild", + "guild_id", + "id", + "managed", + "name", + "require_colons", + "roles", + "user", + "user_id" + ] + }, + "GuildWelcomeScreen": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "welcome_channels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "emoji_id": { + "type": "string" + }, + "emoji_name": { + "type": "string" + }, + "channel_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel_id", + "description" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "description", + "enabled", + "welcome_channels" + ] + }, + "GuildMessagesSearchMessage": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/MessageType" + }, + "content": { + "type": "string" + }, + "channel_id": { + "type": "string" + }, + "author": { + "$ref": "#/definitions/PublicUser" + }, + "attachments": { + "type": "array", + "items": { + "$ref": "#/definitions/Attachment_1" + } + }, + "embeds": { + "type": "array", + "items": { + "$ref": "#/definitions/Embed" + } + }, + "mentions": { + "type": "array", + "items": { + "$ref": "#/definitions/PublicUser" + } + }, + "mention_roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "pinned": { + "type": "boolean" + }, + "mention_everyone": { + "type": "boolean" + }, + "tts": { + "type": "boolean" + }, + "timestamp": { + "type": "string" + }, + "edited_timestamp": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "integer" + }, + "components": { + "type": "array", + "items": {} + }, + "hit": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "additionalProperties": false, + "required": [ + "attachments", + "author", + "channel_id", + "components", + "edited_timestamp", + "embeds", + "flags", + "hit", + "id", + "mention_roles", + "mentions", + "pinned", + "timestamp", + "tts", + "type" + ] + }, + "PublicUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "premium_since": { + "type": "string", + "format": "date-time" + }, + "username": { + "type": "string" + }, + "discriminator": { + "type": "string" + }, + "public_flags": { + "type": "integer" + }, + "avatar": { + "type": "string" + }, + "accent_color": { + "type": "integer" + }, + "banner": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "bot": { + "type": "boolean" + }, + "premium_type": { + "type": "integer" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "bio", + "bot", + "discriminator", + "id", + "premium_since", + "premium_type", + "public_flags", + "username" + ] + }, + "GuildVanityUrl": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "uses": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "code", + "uses" + ] + }, + "GuildVanityUrlNoInvite": { + "type": "object", + "properties": { + "code": { + "type": "null" + } + }, + "additionalProperties": false, + "required": [ + "code" + ] + }, + "ClientStatus": { + "type": "object", + "properties": { + "desktop": { + "type": "string" + }, + "mobile": { + "type": "string" + }, + "web": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Snowflake": { + "description": "A container for useful snowflake-related methods.", + "type": "object", + "additionalProperties": false + }, + "TenorGifResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "src": { + "type": "string" + }, + "gif_src": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + }, + "preview": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "gif_src", + "height", + "id", + "preview", + "src", + "title", + "url", + "width" + ] + }, + "BackupCode": { + "type": "object", + "properties": { + "user": { + "$ref": "#/definitions/User" + }, + "code": { + "type": "string" + }, + "consumed": { + "type": "boolean" + }, + "expired": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "code", + "consumed", + "expired", + "id", + "user" + ] + }, + "APIGuild": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object", + "additionalProperties": false + }, + "id": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "parent": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "invites": { + "type": "array", + "items": { + "$ref": "#/definitions/Invite" + } + }, + "voice_states": { + "type": "array", + "items": { + "$ref": "#/definitions/VoiceState" + } + }, + "webhooks": { + "type": "array", + "items": { + "$ref": "#/definitions/Webhook" + } + }, + "toJSON": { + "type": "object", + "additionalProperties": false + }, + "_do_validate": { + "type": "object", + "additionalProperties": false + }, + "assign": { + "type": "object", + "additionalProperties": false + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object", + "additionalProperties": false + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object", + "additionalProperties": false + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object", + "additionalProperties": false + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object", + "additionalProperties": false + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object", + "additionalProperties": false + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "banner": { + "type": "string" + }, + "unavailable": { + "type": "boolean" + }, + "channels": { + "type": "array", + "items": { + "$ref": "#/definitions/Channel" + } + }, + "region": { + "type": "string" + }, + "system_channel_id": { + "type": "string" + }, + "rules_channel_id": { + "type": "string" + }, + "afk_timeout": { + "type": "integer" + }, + "explicit_content_filter": { + "type": "integer" + }, + "afk_channel_id": { + "type": "string" + }, + "bans": { + "type": "array", + "items": { + "$ref": "#/definitions/Ban" + } + }, + "default_message_notifications": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "discovery_splash": { + "type": "string" + }, + "features": { + "type": "array", + "items": { + "type": "string" + } + }, + "primary_category_id": { + "type": "string" + }, + "large": { + "type": "boolean" + }, + "max_members": { + "type": "integer" + }, + "max_presences": { + "type": "integer" + }, + "max_video_channel_users": { + "type": "integer" + }, + "member_count": { + "type": "integer" + }, + "presence_count": { + "type": "integer" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/Member" + } + }, + "template_id": { + "type": "string" + }, + "emojis": { + "type": "array", + "items": { + "$ref": "#/definitions/Emoji" + } + }, + "stickers": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "mfa_level": { + "type": "integer" + }, + "preferred_locale": { + "type": "string" + }, + "premium_subscription_count": { + "type": "integer" + }, + "premium_tier": { + "type": "integer" + }, + "public_updates_channel_id": { + "type": "string" + }, + "splash": { + "type": "string" + }, + "system_channel_flags": { + "type": "integer" + }, + "verification_level": { + "type": "integer" + }, + "welcome_screen": { + "$ref": "#/definitions/GuildWelcomeScreen" + }, + "widget_channel_id": { + "type": "string" + }, + "widget_enabled": { + "type": "boolean" + }, + "nsfw_level": { + "type": "integer" + }, + "permissions": { + "type": "integer" + }, + "premium_progress_bar_enabled": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "_do_validate", + "assign", + "bans", + "channels", + "emojis", + "features", + "hasId", + "id", + "invites", + "members", + "name", + "nsfw", + "premium_progress_bar_enabled", + "public_updates_channel_id", + "recover", + "reload", + "remove", + "roles", + "save", + "softRemove", + "stickers", + "toJSON", + "unavailable", + "voice_states", + "webhooks", + "welcome_screen", + "widget_enabled" + ] + }, + "DmChannelDTO": { + "type": "object", + "properties": { + "icon": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": "string" + }, + "last_message_id": { + "type": [ + "null", + "string" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "origin_channel_id": { + "type": [ + "null", + "string" + ] + }, + "owner_id": { + "type": "string" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/definitions/MinimalPublicUserDTO" + } + }, + "type": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "icon", + "id", + "last_message_id", + "name", + "origin_channel_id", + "recipients", + "type" + ] + }, + "MinimalPublicUserDTO": { + "type": "object", + "properties": { + "avatar": { + "type": [ + "null", + "string" + ] + }, + "discriminator": { + "type": "string" + }, + "id": { + "type": "string" + }, + "public_flags": { + "type": "integer" + }, + "username": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "discriminator", + "id", + "public_flags", + "username" + ] + }, + "Categories": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "localizations": { + "type": "string" + }, + "is_primary": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "id", + "is_primary", + "localizations", + "name" + ] + }, + "GuildVoiceRegion": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "optimal": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "custom", + "deprecated", + "id", + "name", + "optimal" + ] + }, + "UserLimits": { + "type": "object", + "properties": { + "maxGuilds": { + "type": "integer", + "default": 1048576 + }, + "maxUsername": { + "type": "integer", + "default": 32 + }, + "maxFriends": { + "type": "integer", + "default": 5000 + } + }, + "additionalProperties": false, + "required": [ + "maxFriends", + "maxGuilds", + "maxUsername" + ] + }, + "GuildLimits": { + "type": "object", + "properties": { + "maxRoles": { + "type": "integer", + "default": 1000 + }, + "maxEmojis": { + "type": "integer", + "default": 2000 + }, + "maxMembers": { + "type": "integer", + "default": 25000000 + }, + "maxChannels": { + "type": "integer", + "default": 65535 + }, + "maxChannelsInCategory": { + "type": "integer", + "default": 65535 + } + }, + "additionalProperties": false, + "required": [ + "maxChannels", + "maxChannelsInCategory", + "maxEmojis", + "maxMembers", + "maxRoles" + ] + }, + "MessageLimits": { + "type": "object", + "properties": { + "maxCharacters": { + "type": "integer", + "default": 1048576 + }, + "maxTTSCharacters": { + "type": "integer", + "default": 160 + }, + "maxReactions": { + "type": "integer", + "default": 2048 + }, + "maxAttachmentSize": { + "type": "integer", + "default": 1073741824 + }, + "maxBulkDelete": { + "type": "integer", + "default": 1000 + }, + "maxEmbedDownloadSize": { + "type": "integer", + "default": 5242880 + } + }, + "additionalProperties": false, + "required": [ + "maxAttachmentSize", + "maxBulkDelete", + "maxCharacters", + "maxEmbedDownloadSize", + "maxReactions", + "maxTTSCharacters" + ] + }, + "ChannelLimits": { + "type": "object", + "properties": { + "maxPins": { + "type": "integer", + "default": 500 + }, + "maxTopic": { + "type": "integer", + "default": 1024 + }, + "maxWebhooks": { + "type": "integer", + "default": 100 + } + }, + "additionalProperties": false, + "required": [ + "maxPins", + "maxTopic", + "maxWebhooks" + ] + }, + "RateLimits": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "ip": { + "$ref": "#/definitions/RateLimitOptions" + }, + "global": { + "$ref": "#/definitions/RateLimitOptions" + }, + "error": { + "$ref": "#/definitions/RateLimitOptions" + }, + "routes": { + "$ref": "#/definitions/RouteRateLimit" + } + }, + "additionalProperties": false, + "required": [ + "enabled", + "error", + "global", + "ip", + "routes" + ] + }, + "RateLimitOptions": { + "type": "object", + "properties": { + "bot": { + "type": "integer" + }, + "count": { + "type": "integer" + }, + "window": { + "type": "integer" + }, + "onyIp": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "count", + "window" + ] + }, + "RouteRateLimit": { + "type": "object", + "properties": { + "guild": { + "$ref": "#/definitions/RateLimitOptions" + }, + "webhook": { + "$ref": "#/definitions/RateLimitOptions" + }, + "channel": { + "$ref": "#/definitions/RateLimitOptions" + }, + "auth": {} + }, + "additionalProperties": false, + "required": [ + "auth", + "channel", + "guild", + "webhook" + ] + }, + "GlobalRateLimits": { + "type": "object", + "properties": { + "register": { + "$ref": "#/definitions/GlobalRateLimit" + }, + "sendMessage": { + "$ref": "#/definitions/GlobalRateLimit" + } + }, + "additionalProperties": false, + "required": [ + "register", + "sendMessage" + ] + }, + "GlobalRateLimit": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "default": 100 + }, + "window": { + "type": "integer", + "default": 3600000 + }, + "enabled": { + "type": "boolean", + "default": true + } + }, + "additionalProperties": false, + "required": [ + "enabled", + "limit", + "window" + ] + }, + "PublicConnectedAccount": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "name", + "type" + ] + }, + "UserProfile": { + "type": "object", + "properties": { + "accent_color": { + "type": "integer" + }, + "banner": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "bio" + ] + }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -501838,6 +504552,4259 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, + "TokenResponse": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "settings": { + "$ref": "#/definitions/UserSettings" + } + }, + "additionalProperties": false, + "required": [ + "settings", + "token" + ] + }, + "MFAResponse": { + "type": "object", + "properties": { + "ticket": { + "type": "string" + }, + "mfa": { + "type": "boolean", + "enum": [ + true + ] + }, + "sms": { + "type": "boolean", + "enum": [ + false + ] + }, + "token": { + "type": "null" + } + }, + "additionalProperties": false, + "required": [ + "mfa", + "sms", + "ticket", + "token" + ] + }, + "WebAuthnResponse": { + "type": "object", + "properties": { + "webauthn": { + "type": "string" + }, + "ticket": { + "type": "string" + }, + "mfa": { + "type": "boolean", + "enum": [ + true + ] + }, + "sms": { + "type": "boolean", + "enum": [ + false + ] + }, + "token": { + "type": "null" + } + }, + "additionalProperties": false, + "required": [ + "mfa", + "sms", + "ticket", + "token", + "webauthn" + ] + } + }, + "$schema": "http://json-schema.org/draft-07/schema#" + }, + "WebfingerResponse": { + "type": "object", + "properties": { + "subject": { + "type": "string" + }, + "aliases": { + "type": "array", + "items": { + "type": "string" + } + }, + "links": { + "type": "array", + "items": { + "$ref": "#/definitions/WebfingerLink" + } + } + }, + "additionalProperties": false, + "required": [ + "aliases", + "links", + "subject" + ], + "definitions": { + "ChannelPermissionOverwriteType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "number" + }, + "ConnectedAccountTokenData": { + "type": "object", + "properties": { + "access_token": { + "type": "string" + }, + "token_type": { + "type": "string" + }, + "scope": { + "type": "string" + }, + "refresh_token": { + "type": "string" + }, + "expires_in": { + "type": "integer" + }, + "expires_at": { + "type": "integer" + }, + "fetched_at": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "access_token", + "fetched_at" + ] + }, + "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" + } + } + }, + "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" + }, + "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 + }, + "ChannelOverride": { + "type": "object", + "properties": { + "message_notifications": { + "type": "integer" + }, + "mute_config": { + "$ref": "#/definitions/MuteConfig" + }, + "muted": { + "type": "boolean" + }, + "channel_id": { + "type": [ + "null", + "string" + ] + } + }, + "additionalProperties": false, + "required": [ + "channel_id", + "message_notifications", + "mute_config", + "muted" + ] + }, + "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" + ] + }, + "GenerateWebAuthnCredentialsSchema": { + "type": "object", + "properties": { + "password": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "password" + ] + }, + "CreateWebAuthnCredentialSchema": { + "type": "object", + "properties": { + "credential": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ticket": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "credential", + "name", + "ticket" + ] + }, + "APIErrorResponse": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + }, + "errors": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "_errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "message": { + "type": "string" + }, + "code": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "code", + "message" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "_errors" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "code", + "errors", + "message" + ] + }, + "CaptchaRequiredResponse": { + "type": "object", + "properties": { + "captcha_key": { + "type": "string" + }, + "captcha_sitekey": { + "type": "string" + }, + "captcha_service": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "captcha_key", + "captcha_service", + "captcha_sitekey" + ] + }, + "Guild": { + "type": "object", + "properties": { + "afk_channel_id": { + "type": "string" + }, + "afk_channel": { + "$ref": "#/definitions/Channel" + }, + "afk_timeout": { + "type": "integer" + }, + "bans": { + "type": "array", + "items": { + "$ref": "#/definitions/Ban" + } + }, + "banner": { + "type": "string" + }, + "default_message_notifications": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "discovery_splash": { + "type": "string" + }, + "explicit_content_filter": { + "type": "integer" + }, + "features": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "primary_category_id": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "large": { + "type": "boolean", + "default": false + }, + "max_members": { + "type": "integer" + }, + "max_presences": { + "type": "integer" + }, + "max_video_channel_users": { + "type": "integer" + }, + "member_count": { + "type": "integer" + }, + "presence_count": { + "type": "integer" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/Member" + } + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "channels": { + "type": "array", + "items": { + "$ref": "#/definitions/Channel" + } + }, + "template_id": { + "type": "string" + }, + "template": { + "$ref": "#/definitions/Template" + }, + "emojis": { + "type": "array", + "items": { + "$ref": "#/definitions/Emoji" + } + }, + "stickers": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "invites": { + "type": "array", + "items": { + "$ref": "#/definitions/Invite" + } + }, + "voice_states": { + "type": "array", + "items": { + "$ref": "#/definitions/VoiceState" + } + }, + "webhooks": { + "type": "array", + "items": { + "$ref": "#/definitions/Webhook" + } + }, + "mfa_level": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "preferred_locale": { + "type": "string" + }, + "premium_subscription_count": { + "type": "integer" + }, + "premium_tier": { + "type": "integer" + }, + "public_updates_channel_id": { + "type": "string" + }, + "public_updates_channel": { + "$ref": "#/definitions/Channel" + }, + "rules_channel_id": { + "type": "string" + }, + "rules_channel": { + "type": "string" + }, + "region": { + "type": "string" + }, + "splash": { + "type": "string" + }, + "system_channel_id": { + "type": "string" + }, + "system_channel": { + "$ref": "#/definitions/Channel" + }, + "system_channel_flags": { + "type": "integer" + }, + "unavailable": { + "type": "boolean", + "default": false + }, + "verification_level": { + "type": "integer" + }, + "welcome_screen": { + "$ref": "#/definitions/GuildWelcomeScreen" + }, + "widget_channel_id": { + "type": "string" + }, + "widget_channel": { + "$ref": "#/definitions/Channel" + }, + "widget_enabled": { + "type": "boolean", + "default": true + }, + "nsfw_level": { + "type": "integer" + }, + "nsfw": { + "type": "boolean", + "default": false + }, + "parent": { + "type": "string" + }, + "permissions": { + "type": "integer" + }, + "premium_progress_bar_enabled": { + "type": "boolean", + "default": false + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "bans", + "channels", + "emojis", + "features", + "id", + "invites", + "members", + "name", + "nsfw", + "premium_progress_bar_enabled", + "public_updates_channel_id", + "roles", + "stickers", + "template", + "unavailable", + "voice_states", + "webhooks", + "welcome_screen", + "widget_enabled" + ] + }, + "Channel": { + "type": "object", + "properties": { + "created_at": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": "string" + }, + "icon": { + "type": [ + "null", + "string" + ] + }, + "type": { + "$ref": "#/definitions/ChannelType" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/definitions/Recipient" + } + }, + "last_message_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "parent_id": { + "type": "string" + }, + "parent": { + "$ref": "#/definitions/Channel" + }, + "owner_id": { + "type": "string" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "last_pin_timestamp": { + "type": "integer" + }, + "default_auto_archive_duration": { + "type": "integer" + }, + "position": { + "type": "integer" + }, + "permission_overwrites": { + "type": "array", + "items": { + "$ref": "#/definitions/ChannelPermissionOverwrite" + } + }, + "video_quality_mode": { + "type": "integer" + }, + "bitrate": { + "type": "integer" + }, + "user_limit": { + "type": "integer" + }, + "nsfw": { + "type": "boolean", + "default": false + }, + "rate_limit_per_user": { + "type": "integer" + }, + "topic": { + "type": "string" + }, + "invites": { + "type": "array", + "items": { + "$ref": "#/definitions/Invite" + } + }, + "retention_policy_id": { + "type": "string" + }, + "messages": { + "type": "array", + "items": { + "$ref": "#/definitions/Message" + } + }, + "voice_states": { + "type": "array", + "items": { + "$ref": "#/definitions/VoiceState" + } + }, + "read_states": { + "type": "array", + "items": { + "$ref": "#/definitions/ReadState" + } + }, + "webhooks": { + "type": "array", + "items": { + "$ref": "#/definitions/Webhook" + } + }, + "flags": { + "type": "integer", + "default": 0 + }, + "default_thread_rate_limit_per_user": { + "type": "integer", + "default": 0 + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "created_at", + "default_thread_rate_limit_per_user", + "flags", + "guild", + "id", + "nsfw", + "owner", + "parent_id", + "type" + ] + }, + "ChannelType": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 2, + 255, + 3, + 33, + 34, + 35, + 4, + 5, + 6, + 64, + 7, + 8, + 9 + ], + "type": "number" + }, + "Recipient": { + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "closed": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "channel_id", + "closed", + "id", + "user", + "user_id" + ] + }, + "User": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "discriminator": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "accent_color": { + "type": "integer" + }, + "banner": { + "type": "string" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "desktop": { + "type": "boolean", + "default": false + }, + "mobile": { + "type": "boolean", + "default": false + }, + "premium": { + "type": "boolean" + }, + "premium_type": { + "type": "integer" + }, + "bot": { + "type": "boolean", + "default": false + }, + "bio": { + "type": "string", + "default": "" + }, + "system": { + "type": "boolean", + "default": false + }, + "nsfw_allowed": { + "type": "boolean", + "default": true + }, + "mfa_enabled": { + "type": "boolean", + "default": false + }, + "webauthn_enabled": { + "type": "boolean", + "default": false + }, + "totp_secret": { + "type": "string", + "default": "" + }, + "totp_last_ticket": { + "type": "string", + "default": "" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "premium_since": { + "type": "string", + "format": "date-time" + }, + "verified": { + "type": "boolean" + }, + "disabled": { + "type": "boolean", + "default": false + }, + "deleted": { + "type": "boolean", + "default": false + }, + "email": { + "type": "string" + }, + "flags": { + "type": "integer", + "default": 0 + }, + "public_flags": { + "type": "integer", + "default": 0 + }, + "purchased_flags": { + "type": "integer", + "default": 0 + }, + "premium_usage_flags": { + "type": "integer", + "default": 0 + }, + "rights": { + "type": "string" + }, + "sessions": { + "type": "array", + "items": { + "$ref": "#/definitions/Session" + } + }, + "relationships": { + "type": "array", + "items": { + "$ref": "#/definitions/Relationship" + } + }, + "connected_accounts": { + "type": "array", + "items": { + "$ref": "#/definitions/ConnectedAccount" + } + }, + "data": { + "type": "object", + "properties": { + "valid_tokens_since": { + "type": "string", + "format": "date-time" + }, + "hash": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "valid_tokens_since" + ] + }, + "fingerprints": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "settings": { + "$ref": "#/definitions/UserSettings" + }, + "extended_settings": { + "type": "string", + "default": "{}" + }, + "security_keys": { + "type": "array", + "items": { + "$ref": "#/definitions/SecurityKey" + } + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "bio", + "bot", + "connected_accounts", + "created_at", + "data", + "deleted", + "desktop", + "disabled", + "discriminator", + "extended_settings", + "fingerprints", + "flags", + "id", + "mfa_enabled", + "mobile", + "nsfw_allowed", + "premium", + "premium_since", + "premium_type", + "premium_usage_flags", + "public_flags", + "purchased_flags", + "relationships", + "rights", + "security_keys", + "sessions", + "settings", + "system", + "username", + "verified", + "webauthn_enabled" + ] + }, + "Session": { + "type": "object", + "properties": { + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "session_id": { + "type": "string" + }, + "activities": { + "type": "array", + "items": { + "$ref": "#/definitions/Activity" + } + }, + "client_info": { + "type": "object", + "properties": { + "client": { + "type": "string" + }, + "os": { + "type": "string" + }, + "version": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "client", + "os", + "version" + ] + }, + "status": { + "$ref": "#/definitions/Status" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "activities", + "client_info", + "id", + "session_id", + "status", + "user", + "user_id" + ] + }, + "Relationship": { + "type": "object", + "properties": { + "from_id": { + "type": "string" + }, + "from": { + "$ref": "#/definitions/User" + }, + "to_id": { + "type": "string" + }, + "to": { + "$ref": "#/definitions/User" + }, + "nickname": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/RelationshipType" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "from", + "from_id", + "id", + "to", + "to_id", + "type" + ] + }, + "RelationshipType": { + "enum": [ + 1, + 2, + 3, + 4 + ], + "type": "number" + }, + "ConnectedAccount": { + "type": "object", + "properties": { + "external_id": { + "type": "string" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "friend_sync": { + "type": "boolean", + "default": false + }, + "name": { + "type": "string" + }, + "revoked": { + "type": "boolean", + "default": false + }, + "show_activity": { + "type": "integer", + "default": 0 + }, + "type": { + "type": "string" + }, + "verified": { + "type": "boolean", + "default": true + }, + "visibility": { + "type": "integer", + "default": 0 + }, + "integrations": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "metadata_": {}, + "metadata_visibility": { + "type": "integer", + "default": 0 + }, + "two_way_link": { + "type": "boolean", + "default": false + }, + "token_data": { + "anyOf": [ + { + "$ref": "#/definitions/ConnectedAccountTokenData" + }, + { + "type": "null" + } + ] + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "external_id", + "id", + "name", + "type", + "user", + "user_id" + ] + }, + "UserSettings": { + "type": "object", + "properties": { + "index": { + "type": "string" + }, + "afk_timeout": { + "type": "integer", + "default": 3600 + }, + "allow_accessibility_detection": { + "type": "boolean", + "default": true + }, + "animate_emoji": { + "type": "boolean", + "default": true + }, + "animate_stickers": { + "type": "integer", + "default": 0 + }, + "contact_sync_enabled": { + "type": "boolean", + "default": false + }, + "convert_emoticons": { + "type": "boolean", + "default": false + }, + "custom_status": { + "anyOf": [ + { + "$ref": "#/definitions/CustomStatus" + }, + { + "type": "null" + } + ], + "default": null + }, + "default_guilds_restricted": { + "type": "boolean", + "default": false + }, + "detect_platform_accounts": { + "type": "boolean", + "default": false + }, + "developer_mode": { + "type": "boolean", + "default": true + }, + "disable_games_tab": { + "type": "boolean", + "default": true + }, + "enable_tts_command": { + "type": "boolean", + "default": false + }, + "explicit_content_filter": { + "type": "integer", + "default": 0 + }, + "friend_source_flags": { + "$ref": "#/definitions/FriendSourceFlags" + }, + "gateway_connected": { + "type": "boolean", + "default": false + }, + "gif_auto_play": { + "type": "boolean", + "default": false + }, + "guild_folders": { + "type": "array", + "items": { + "$ref": "#/definitions/GuildFolder" + }, + "default": [] + }, + "guild_positions": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "inline_attachment_media": { + "type": "boolean", + "default": true + }, + "inline_embed_media": { + "type": "boolean", + "default": true + }, + "locale": { + "type": "string", + "default": "en-US" + }, + "message_display_compact": { + "type": "boolean", + "default": false + }, + "native_phone_integration_enabled": { + "type": "boolean", + "default": true + }, + "render_embeds": { + "type": "boolean", + "default": true + }, + "render_reactions": { + "type": "boolean", + "default": true + }, + "restricted_guilds": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "show_current_game": { + "type": "boolean", + "default": true + }, + "status": { + "enum": [ + "dnd", + "idle", + "invisible", + "offline", + "online" + ], + "type": "string", + "default": "online" + }, + "stream_notifications_enabled": { + "type": "boolean", + "default": false + }, + "theme": { + "enum": [ + "dark", + "light" + ], + "type": "string", + "default": "dark" + }, + "timezone_offset": { + "type": "integer", + "default": 0 + } + }, + "additionalProperties": false, + "required": [ + "afk_timeout", + "allow_accessibility_detection", + "animate_emoji", + "animate_stickers", + "contact_sync_enabled", + "convert_emoticons", + "custom_status", + "default_guilds_restricted", + "detect_platform_accounts", + "developer_mode", + "disable_games_tab", + "enable_tts_command", + "explicit_content_filter", + "friend_source_flags", + "gateway_connected", + "gif_auto_play", + "guild_folders", + "guild_positions", + "index", + "inline_attachment_media", + "inline_embed_media", + "locale", + "message_display_compact", + "native_phone_integration_enabled", + "render_embeds", + "render_reactions", + "restricted_guilds", + "show_current_game", + "status", + "stream_notifications_enabled", + "theme", + "timezone_offset" + ] + }, + "SecurityKey": { + "type": "object", + "properties": { + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "key_id": { + "type": "string" + }, + "public_key": { + "type": "string" + }, + "counter": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "counter", + "id", + "key_id", + "name", + "public_key", + "user", + "user_id" + ] + }, + "ChannelPermissionOverwrite": { + "type": "object", + "properties": { + "allow": { + "type": "string" + }, + "deny": { + "type": "string" + }, + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/ChannelPermissionOverwriteType" + } + }, + "additionalProperties": false, + "required": [ + "allow", + "deny", + "id", + "type" + ] + }, + "Invite": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "temporary": { + "type": "boolean" + }, + "uses": { + "type": "integer" + }, + "max_uses": { + "type": "integer" + }, + "max_age": { + "type": "integer" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "expires_at": { + "type": "string", + "format": "date-time" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "inviter_id": { + "type": "string" + }, + "inviter": { + "$ref": "#/definitions/User" + }, + "target_user_id": { + "type": "string" + }, + "target_user": { + "type": "string" + }, + "target_user_type": { + "type": "integer" + }, + "vanity_url": { + "type": "boolean" + }, + "flags": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "channel_id", + "code", + "created_at", + "flags", + "guild", + "guild_id", + "inviter", + "max_age", + "max_uses", + "target_user_id", + "temporary", + "uses" + ] + }, + "Message": { + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "author_id": { + "type": "string" + }, + "author": { + "$ref": "#/definitions/User" + }, + "member_id": { + "type": "string" + }, + "member": { + "$ref": "#/definitions/Member" + }, + "webhook_id": { + "type": "string" + }, + "webhook": { + "$ref": "#/definitions/Webhook" + }, + "application_id": { + "type": "string" + }, + "application": { + "$ref": "#/definitions/Application" + }, + "content": { + "type": "string" + }, + "timestamp": { + "type": "string", + "format": "date-time" + }, + "edited_timestamp": { + "type": "string", + "format": "date-time" + }, + "tts": { + "type": "boolean" + }, + "mention_everyone": { + "type": "boolean" + }, + "mentions": { + "type": "array", + "items": { + "$ref": "#/definitions/User" + } + }, + "mention_roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "mention_channels": { + "type": "array", + "items": { + "$ref": "#/definitions/Channel" + } + }, + "sticker_items": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "attachments": { + "type": "array", + "items": { + "$ref": "#/definitions/Attachment_1" + } + }, + "embeds": { + "type": "array", + "items": { + "$ref": "#/definitions/Embed" + } + }, + "reactions": { + "type": "array", + "items": { + "$ref": "#/definitions/Reaction" + } + }, + "nonce": { + "type": "string" + }, + "pinned": { + "type": "boolean" + }, + "type": { + "$ref": "#/definitions/MessageType" + }, + "activity": { + "type": "object", + "properties": { + "type": { + "type": "integer" + }, + "party_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "party_id", + "type" + ] + }, + "flags": { + "type": "integer" + }, + "message_reference": { + "type": "object", + "properties": { + "message_id": { + "type": "string" + }, + "channel_id": { + "type": "string" + }, + "guild_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "message_id" + ] + }, + "referenced_message": { + "$ref": "#/definitions/Message" + }, + "interaction": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/InteractionType" + }, + "name": { + "type": "string" + }, + "user_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "name", + "type", + "user_id" + ] + }, + "components": { + "type": "array", + "items": { + "$ref": "#/definitions/MessageComponent" + } + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "embeds", + "id", + "mention_channels", + "mention_roles", + "mentions", + "reactions", + "timestamp", + "type" + ] + }, + "Member": { + "type": "object", + "properties": { + "index": { + "type": "string" + }, + "id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "nick": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "joined_at": { + "type": "string", + "format": "date-time" + }, + "premium_since": { + "type": "integer" + }, + "deaf": { + "type": "boolean" + }, + "mute": { + "type": "boolean" + }, + "pending": { + "type": "boolean" + }, + "settings": { + "$ref": "#/definitions/UserGuildSettings" + }, + "last_message_id": { + "type": "string" + }, + "joined_by": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "banner": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + }, + "communication_disabled_until": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "avatar", + "banner", + "bio", + "communication_disabled_until", + "deaf", + "guild", + "guild_id", + "id", + "index", + "joined_at", + "joined_by", + "mute", + "pending", + "roles", + "settings", + "user" + ] + }, + "Role": { + "type": "object", + "properties": { + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "color": { + "type": "integer" + }, + "hoist": { + "type": "boolean" + }, + "managed": { + "type": "boolean" + }, + "mentionable": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "string" + }, + "position": { + "type": "integer" + }, + "icon": { + "type": "string" + }, + "unicode_emoji": { + "type": "string" + }, + "tags": { + "type": "object", + "properties": { + "bot_id": { + "type": "string" + }, + "integration_id": { + "type": "string" + }, + "premium_subscriber": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "flags": { + "type": "integer" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "color", + "flags", + "guild", + "guild_id", + "hoist", + "id", + "managed", + "mentionable", + "name", + "permissions", + "position" + ] + }, + "UserGuildSettings": { + "type": "object", + "properties": { + "channel_overrides": { + "anyOf": [ + { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/ChannelOverride" + } + }, + { + "type": "null" + } + ] + }, + "message_notifications": { + "type": "integer" + }, + "mobile_push": { + "type": "boolean" + }, + "mute_config": { + "anyOf": [ + { + "$ref": "#/definitions/MuteConfig" + }, + { + "type": "null" + } + ] + }, + "muted": { + "type": "boolean" + }, + "suppress_everyone": { + "type": "boolean" + }, + "suppress_roles": { + "type": "boolean" + }, + "version": { + "type": "integer" + }, + "guild_id": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "integer" + }, + "mute_scheduled_events": { + "type": "boolean" + }, + "hide_muted_channels": { + "type": "boolean" + }, + "notify_highlights": { + "type": "number", + "enum": [ + 0 + ] + } + }, + "additionalProperties": false, + "required": [ + "channel_overrides", + "flags", + "guild_id", + "hide_muted_channels", + "message_notifications", + "mobile_push", + "mute_config", + "mute_scheduled_events", + "muted", + "notify_highlights", + "suppress_everyone", + "suppress_roles", + "version" + ] + }, + "Webhook": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/WebhookType" + }, + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "token": { + "type": "string" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "application_id": { + "type": "string" + }, + "application": { + "$ref": "#/definitions/Application" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "source_guild_id": { + "type": "string" + }, + "source_guild": { + "$ref": "#/definitions/Guild" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "application", + "application_id", + "channel", + "channel_id", + "guild", + "guild_id", + "id", + "source_guild", + "source_guild_id", + "type", + "user", + "user_id" + ] + }, + "WebhookType": { + "enum": [ + 1, + 2, + 3 + ], + "type": "number" + }, + "Application": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "description": { + "type": "string" + }, + "summary": { + "type": "string", + "default": "" + }, + "type": { + "type": "object", + "properties": {}, + "additionalProperties": true + }, + "hook": { + "type": "boolean", + "default": true + }, + "bot_public": { + "type": "boolean", + "default": true + }, + "bot_require_code_grant": { + "type": "boolean", + "default": false + }, + "verify_key": { + "type": "string" + }, + "owner": { + "$ref": "#/definitions/User" + }, + "flags": { + "type": "integer", + "default": 0 + }, + "redirect_uris": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "rpc_application_state": { + "type": "integer", + "default": 0 + }, + "store_application_state": { + "type": "integer", + "default": 1 + }, + "verification_state": { + "type": "integer", + "default": 1 + }, + "interactions_endpoint_url": { + "type": "string" + }, + "integration_public": { + "type": "boolean", + "default": true + }, + "integration_require_code_grant": { + "type": "boolean", + "default": false + }, + "discoverability_state": { + "type": "integer", + "default": 1 + }, + "discovery_eligibility_flags": { + "type": "integer", + "default": 2240 + }, + "bot": { + "$ref": "#/definitions/User" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + }, + "cover_image": { + "type": "string" + }, + "install_params": { + "type": "object", + "properties": { + "scopes": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "permissions", + "scopes" + ] + }, + "terms_of_service_url": { + "type": "string" + }, + "privacy_policy_url": { + "type": "string" + }, + "team": { + "$ref": "#/definitions/Team" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "description", + "discoverability_state", + "discovery_eligibility_flags", + "flags", + "hook", + "id", + "integration_public", + "integration_require_code_grant", + "name", + "owner", + "redirect_uris", + "rpc_application_state", + "store_application_state", + "summary", + "verification_state", + "verify_key" + ] + }, + "Team": { + "type": "object", + "properties": { + "icon": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/TeamMember" + } + }, + "name": { + "type": "string" + }, + "owner_user_id": { + "type": "string" + }, + "owner_user": { + "$ref": "#/definitions/User" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "members", + "name", + "owner_user", + "owner_user_id" + ] + }, + "TeamMember": { + "type": "object", + "properties": { + "membership_state": { + "$ref": "#/definitions/TeamMemberState" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "team_id": { + "type": "string" + }, + "team": { + "$ref": "#/definitions/Team" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "membership_state", + "permissions", + "team", + "team_id", + "user", + "user_id" + ] + }, + "TeamMemberState": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "Sticker": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "available": { + "type": "boolean" + }, + "tags": { + "type": "string" + }, + "pack_id": { + "type": "string" + }, + "pack": { + "$ref": "#/definitions/StickerPack" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "type": { + "$ref": "#/definitions/StickerType" + }, + "format_type": { + "$ref": "#/definitions/StickerFormatType" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "format_type", + "id", + "name", + "pack", + "type" + ] + }, + "StickerPack": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "banner_asset_id": { + "type": "string" + }, + "stickers": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "cover_sticker_id": { + "type": "string" + }, + "cover_sticker": { + "$ref": "#/definitions/Sticker" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id", + "name", + "stickers" + ] + }, + "StickerType": { + "enum": [ + 1, + 2 + ], + "type": "number" + }, + "StickerFormatType": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "number" + }, + "Attachment_1": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "size": { + "type": "integer" + }, + "url": { + "type": "string" + }, + "proxy_url": { + "type": "string" + }, + "height": { + "type": "integer" + }, + "width": { + "type": "integer" + }, + "content_type": { + "type": "string" + }, + "message_id": { + "type": "string" + }, + "message": { + "$ref": "#/definitions/Message" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "filename", + "id", + "message", + "message_id", + "proxy_url", + "size", + "url" + ] + }, + "Reaction": { + "type": "object", + "properties": { + "count": { + "type": "integer" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "user_ids": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "count", + "emoji", + "user_ids" + ] + }, + "PartialEmoji": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "animated": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "name" + ] + }, + "MessageType": { + "enum": [ + 0, + 1, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 19, + 2, + 20, + 255, + 3, + 4, + 41, + 42, + 43, + 5, + 50, + 6, + 63, + 7, + 8, + 9 + ], + "type": "number" + }, + "InteractionType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "number" + }, + "MessageComponent": { + "type": "object", + "properties": { + "type": { + "type": "integer" + }, + "style": { + "type": "integer" + }, + "label": { + "type": "string" + }, + "emoji": { + "$ref": "#/definitions/PartialEmoji" + }, + "custom_id": { + "type": "string" + }, + "url": { + "type": "string" + }, + "disabled": { + "type": "boolean" + }, + "components": { + "type": "array", + "items": { + "$ref": "#/definitions/MessageComponent" + } + } + }, + "additionalProperties": false, + "required": [ + "components", + "type" + ] + }, + "VoiceState": { + "type": "object", + "properties": { + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "member": { + "$ref": "#/definitions/Member" + }, + "session_id": { + "type": "string" + }, + "token": { + "type": "string" + }, + "deaf": { + "type": "boolean" + }, + "mute": { + "type": "boolean" + }, + "self_deaf": { + "type": "boolean" + }, + "self_mute": { + "type": "boolean" + }, + "self_stream": { + "type": "boolean" + }, + "self_video": { + "type": "boolean" + }, + "suppress": { + "type": "boolean" + }, + "request_to_speak_timestamp": { + "type": "string", + "format": "date-time" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "channel_id", + "deaf", + "guild_id", + "id", + "member", + "mute", + "self_deaf", + "self_mute", + "self_video", + "session_id", + "suppress", + "token", + "user", + "user_id" + ] + }, + "ReadState": { + "type": "object", + "properties": { + "channel_id": { + "type": "string" + }, + "channel": { + "$ref": "#/definitions/Channel" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "last_message_id": { + "type": "string" + }, + "public_ack": { + "type": "string" + }, + "notifications_cursor": { + "type": "string" + }, + "last_pin_timestamp": { + "type": "string", + "format": "date-time" + }, + "mention_count": { + "type": "integer" + }, + "manual": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel", + "channel_id", + "id", + "last_message_id", + "manual", + "mention_count", + "notifications_cursor", + "public_ack", + "user", + "user_id" + ] + }, + "Ban": { + "type": "object", + "properties": { + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "executor_id": { + "type": "string" + }, + "executor": { + "$ref": "#/definitions/User" + }, + "ip": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "executor", + "executor_id", + "guild", + "guild_id", + "id", + "ip", + "user", + "user_id" + ] + }, + "Template": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "usage_count": { + "type": "integer" + }, + "creator_id": { + "type": "string" + }, + "creator": { + "$ref": "#/definitions/User" + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + }, + "source_guild_id": { + "type": "string" + }, + "source_guild": { + "$ref": "#/definitions/Guild" + }, + "serialized_source_guild": { + "$ref": "#/definitions/Guild" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "code", + "created_at", + "creator", + "creator_id", + "id", + "name", + "serialized_source_guild", + "source_guild", + "source_guild_id", + "updated_at" + ] + }, + "Emoji": { + "type": "object", + "properties": { + "animated": { + "type": "boolean" + }, + "available": { + "type": "boolean" + }, + "guild_id": { + "type": "string" + }, + "guild": { + "$ref": "#/definitions/Guild" + }, + "user_id": { + "type": "string" + }, + "user": { + "$ref": "#/definitions/User" + }, + "managed": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "require_colons": { + "type": "boolean" + }, + "roles": { + "type": "array", + "items": { + "type": "string" + } + }, + "groups": { + "type": "array", + "items": { + "type": "string" + } + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "animated", + "available", + "groups", + "guild", + "guild_id", + "id", + "managed", + "name", + "require_colons", + "roles", + "user", + "user_id" + ] + }, + "GuildWelcomeScreen": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "welcome_channels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "emoji_id": { + "type": "string" + }, + "emoji_name": { + "type": "string" + }, + "channel_id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "channel_id", + "description" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "description", + "enabled", + "welcome_channels" + ] + }, + "GuildMessagesSearchMessage": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/MessageType" + }, + "content": { + "type": "string" + }, + "channel_id": { + "type": "string" + }, + "author": { + "$ref": "#/definitions/PublicUser" + }, + "attachments": { + "type": "array", + "items": { + "$ref": "#/definitions/Attachment_1" + } + }, + "embeds": { + "type": "array", + "items": { + "$ref": "#/definitions/Embed" + } + }, + "mentions": { + "type": "array", + "items": { + "$ref": "#/definitions/PublicUser" + } + }, + "mention_roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "pinned": { + "type": "boolean" + }, + "mention_everyone": { + "type": "boolean" + }, + "tts": { + "type": "boolean" + }, + "timestamp": { + "type": "string" + }, + "edited_timestamp": { + "type": [ + "null", + "string" + ] + }, + "flags": { + "type": "integer" + }, + "components": { + "type": "array", + "items": {} + }, + "hit": { + "type": "boolean", + "enum": [ + true + ] + } + }, + "additionalProperties": false, + "required": [ + "attachments", + "author", + "channel_id", + "components", + "edited_timestamp", + "embeds", + "flags", + "hit", + "id", + "mention_roles", + "mentions", + "pinned", + "timestamp", + "tts", + "type" + ] + }, + "PublicUser": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "premium_since": { + "type": "string", + "format": "date-time" + }, + "username": { + "type": "string" + }, + "discriminator": { + "type": "string" + }, + "public_flags": { + "type": "integer" + }, + "avatar": { + "type": "string" + }, + "accent_color": { + "type": "integer" + }, + "banner": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "bot": { + "type": "boolean" + }, + "premium_type": { + "type": "integer" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "bio", + "bot", + "discriminator", + "id", + "premium_since", + "premium_type", + "public_flags", + "username" + ] + }, + "GuildVanityUrl": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "uses": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "code", + "uses" + ] + }, + "GuildVanityUrlNoInvite": { + "type": "object", + "properties": { + "code": { + "type": "null" + } + }, + "additionalProperties": false, + "required": [ + "code" + ] + }, + "ClientStatus": { + "type": "object", + "properties": { + "desktop": { + "type": "string" + }, + "mobile": { + "type": "string" + }, + "web": { + "type": "string" + } + }, + "additionalProperties": false + }, + "Snowflake": { + "description": "A container for useful snowflake-related methods.", + "type": "object", + "additionalProperties": false + }, + "TenorGifResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "src": { + "type": "string" + }, + "gif_src": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + }, + "preview": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "gif_src", + "height", + "id", + "preview", + "src", + "title", + "url", + "width" + ] + }, + "BackupCode": { + "type": "object", + "properties": { + "user": { + "$ref": "#/definitions/User" + }, + "code": { + "type": "string" + }, + "consumed": { + "type": "boolean" + }, + "expired": { + "type": "boolean" + }, + "id": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "code", + "consumed", + "expired", + "id", + "user" + ] + }, + "APIGuild": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "reload": { + "description": "Reloads entity data from the database.", + "type": "object", + "additionalProperties": false + }, + "id": { + "type": "string" + }, + "icon": { + "type": "string" + }, + "parent": { + "type": "string" + }, + "owner_id": { + "type": "string" + }, + "nsfw": { + "type": "boolean" + }, + "invites": { + "type": "array", + "items": { + "$ref": "#/definitions/Invite" + } + }, + "voice_states": { + "type": "array", + "items": { + "$ref": "#/definitions/VoiceState" + } + }, + "webhooks": { + "type": "array", + "items": { + "$ref": "#/definitions/Webhook" + } + }, + "toJSON": { + "type": "object", + "additionalProperties": false + }, + "_do_validate": { + "type": "object", + "additionalProperties": false + }, + "assign": { + "type": "object", + "additionalProperties": false + }, + "hasId": { + "description": "Checks if entity has an id.\nIf entity composite compose ids, it will check them all.", + "type": "object", + "additionalProperties": false + }, + "save": { + "description": "Saves current entity in the database.\nIf entity does not exist in the database then inserts, otherwise updates.", + "type": "object", + "additionalProperties": false + }, + "remove": { + "description": "Removes current entity from the database.", + "type": "object", + "additionalProperties": false + }, + "softRemove": { + "description": "Records the delete date of current entity.", + "type": "object", + "additionalProperties": false + }, + "recover": { + "description": "Recovers a given entity in the database.", + "type": "object", + "additionalProperties": false + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/Role" + } + }, + "banner": { + "type": "string" + }, + "unavailable": { + "type": "boolean" + }, + "channels": { + "type": "array", + "items": { + "$ref": "#/definitions/Channel" + } + }, + "region": { + "type": "string" + }, + "system_channel_id": { + "type": "string" + }, + "rules_channel_id": { + "type": "string" + }, + "afk_timeout": { + "type": "integer" + }, + "explicit_content_filter": { + "type": "integer" + }, + "afk_channel_id": { + "type": "string" + }, + "bans": { + "type": "array", + "items": { + "$ref": "#/definitions/Ban" + } + }, + "default_message_notifications": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "discovery_splash": { + "type": "string" + }, + "features": { + "type": "array", + "items": { + "type": "string" + } + }, + "primary_category_id": { + "type": "string" + }, + "large": { + "type": "boolean" + }, + "max_members": { + "type": "integer" + }, + "max_presences": { + "type": "integer" + }, + "max_video_channel_users": { + "type": "integer" + }, + "member_count": { + "type": "integer" + }, + "presence_count": { + "type": "integer" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/Member" + } + }, + "template_id": { + "type": "string" + }, + "emojis": { + "type": "array", + "items": { + "$ref": "#/definitions/Emoji" + } + }, + "stickers": { + "type": "array", + "items": { + "$ref": "#/definitions/Sticker" + } + }, + "mfa_level": { + "type": "integer" + }, + "preferred_locale": { + "type": "string" + }, + "premium_subscription_count": { + "type": "integer" + }, + "premium_tier": { + "type": "integer" + }, + "public_updates_channel_id": { + "type": "string" + }, + "splash": { + "type": "string" + }, + "system_channel_flags": { + "type": "integer" + }, + "verification_level": { + "type": "integer" + }, + "welcome_screen": { + "$ref": "#/definitions/GuildWelcomeScreen" + }, + "widget_channel_id": { + "type": "string" + }, + "widget_enabled": { + "type": "boolean" + }, + "nsfw_level": { + "type": "integer" + }, + "permissions": { + "type": "integer" + }, + "premium_progress_bar_enabled": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "_do_validate", + "assign", + "bans", + "channels", + "emojis", + "features", + "hasId", + "id", + "invites", + "members", + "name", + "nsfw", + "premium_progress_bar_enabled", + "public_updates_channel_id", + "recover", + "reload", + "remove", + "roles", + "save", + "softRemove", + "stickers", + "toJSON", + "unavailable", + "voice_states", + "webhooks", + "welcome_screen", + "widget_enabled" + ] + }, + "DmChannelDTO": { + "type": "object", + "properties": { + "icon": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": "string" + }, + "last_message_id": { + "type": [ + "null", + "string" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "origin_channel_id": { + "type": [ + "null", + "string" + ] + }, + "owner_id": { + "type": "string" + }, + "recipients": { + "type": "array", + "items": { + "$ref": "#/definitions/MinimalPublicUserDTO" + } + }, + "type": { + "type": "integer" + } + }, + "additionalProperties": false, + "required": [ + "icon", + "id", + "last_message_id", + "name", + "origin_channel_id", + "recipients", + "type" + ] + }, + "MinimalPublicUserDTO": { + "type": "object", + "properties": { + "avatar": { + "type": [ + "null", + "string" + ] + }, + "discriminator": { + "type": "string" + }, + "id": { + "type": "string" + }, + "public_flags": { + "type": "integer" + }, + "username": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "discriminator", + "id", + "public_flags", + "username" + ] + }, + "Categories": { + "type": "object", + "properties": { + "id": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "localizations": { + "type": "string" + }, + "is_primary": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "id", + "is_primary", + "localizations", + "name" + ] + }, + "GuildVoiceRegion": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "custom": { + "type": "boolean" + }, + "deprecated": { + "type": "boolean" + }, + "optimal": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "custom", + "deprecated", + "id", + "name", + "optimal" + ] + }, + "UserLimits": { + "type": "object", + "properties": { + "maxGuilds": { + "type": "integer", + "default": 1048576 + }, + "maxUsername": { + "type": "integer", + "default": 32 + }, + "maxFriends": { + "type": "integer", + "default": 5000 + } + }, + "additionalProperties": false, + "required": [ + "maxFriends", + "maxGuilds", + "maxUsername" + ] + }, + "GuildLimits": { + "type": "object", + "properties": { + "maxRoles": { + "type": "integer", + "default": 1000 + }, + "maxEmojis": { + "type": "integer", + "default": 2000 + }, + "maxMembers": { + "type": "integer", + "default": 25000000 + }, + "maxChannels": { + "type": "integer", + "default": 65535 + }, + "maxChannelsInCategory": { + "type": "integer", + "default": 65535 + } + }, + "additionalProperties": false, + "required": [ + "maxChannels", + "maxChannelsInCategory", + "maxEmojis", + "maxMembers", + "maxRoles" + ] + }, + "MessageLimits": { + "type": "object", + "properties": { + "maxCharacters": { + "type": "integer", + "default": 1048576 + }, + "maxTTSCharacters": { + "type": "integer", + "default": 160 + }, + "maxReactions": { + "type": "integer", + "default": 2048 + }, + "maxAttachmentSize": { + "type": "integer", + "default": 1073741824 + }, + "maxBulkDelete": { + "type": "integer", + "default": 1000 + }, + "maxEmbedDownloadSize": { + "type": "integer", + "default": 5242880 + } + }, + "additionalProperties": false, + "required": [ + "maxAttachmentSize", + "maxBulkDelete", + "maxCharacters", + "maxEmbedDownloadSize", + "maxReactions", + "maxTTSCharacters" + ] + }, + "ChannelLimits": { + "type": "object", + "properties": { + "maxPins": { + "type": "integer", + "default": 500 + }, + "maxTopic": { + "type": "integer", + "default": 1024 + }, + "maxWebhooks": { + "type": "integer", + "default": 100 + } + }, + "additionalProperties": false, + "required": [ + "maxPins", + "maxTopic", + "maxWebhooks" + ] + }, + "RateLimits": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "ip": { + "$ref": "#/definitions/RateLimitOptions" + }, + "global": { + "$ref": "#/definitions/RateLimitOptions" + }, + "error": { + "$ref": "#/definitions/RateLimitOptions" + }, + "routes": { + "$ref": "#/definitions/RouteRateLimit" + } + }, + "additionalProperties": false, + "required": [ + "enabled", + "error", + "global", + "ip", + "routes" + ] + }, + "RateLimitOptions": { + "type": "object", + "properties": { + "bot": { + "type": "integer" + }, + "count": { + "type": "integer" + }, + "window": { + "type": "integer" + }, + "onyIp": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "count", + "window" + ] + }, + "RouteRateLimit": { + "type": "object", + "properties": { + "guild": { + "$ref": "#/definitions/RateLimitOptions" + }, + "webhook": { + "$ref": "#/definitions/RateLimitOptions" + }, + "channel": { + "$ref": "#/definitions/RateLimitOptions" + }, + "auth": {} + }, + "additionalProperties": false, + "required": [ + "auth", + "channel", + "guild", + "webhook" + ] + }, + "GlobalRateLimits": { + "type": "object", + "properties": { + "register": { + "$ref": "#/definitions/GlobalRateLimit" + }, + "sendMessage": { + "$ref": "#/definitions/GlobalRateLimit" + } + }, + "additionalProperties": false, + "required": [ + "register", + "sendMessage" + ] + }, + "GlobalRateLimit": { + "type": "object", + "properties": { + "limit": { + "type": "integer", + "default": 100 + }, + "window": { + "type": "integer", + "default": 3600000 + }, + "enabled": { + "type": "boolean", + "default": true + } + }, + "additionalProperties": false, + "required": [ + "enabled", + "limit", + "window" + ] + }, + "PublicConnectedAccount": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "verified": { + "type": "boolean" + } + }, + "additionalProperties": false, + "required": [ + "name", + "type" + ] + }, + "UserProfile": { + "type": "object", + "properties": { + "accent_color": { + "type": "integer" + }, + "banner": { + "type": "string" + }, + "bio": { + "type": "string" + }, + "theme_colors": { + "type": "array", + "items": { + "type": "integer" + } + }, + "pronouns": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "bio" + ] + }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -506035,6 +513002,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -510219,6 +517209,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -514415,6 +521428,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -518626,6 +525662,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -522841,6 +529900,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -527035,6 +534117,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -531228,6 +538333,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -535421,6 +542549,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { @@ -539620,6 +546771,29 @@ "bio" ] }, + "WebfingerLink": { + "type": "object", + "properties": { + "rel": { + "type": "string" + }, + "type": { + "type": "string" + }, + "href": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "href", + "rel", + "type" + ] + }, "TokenResponse": { "type": "object", "properties": { diff --git a/package.json b/package.json index 70e4ae84..d2c68a77 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,8 @@ "@spacebar/api": "dist/api", "@spacebar/cdn": "dist/cdn", "@spacebar/gateway": "dist/gateway", - "@spacebar/util": "dist/util" + "@spacebar/util": "dist/util", + "@spacebar/ap": "dist/activitypub" }, "optionalDependencies": { "erlpack": "^0.1.4", @@ -122,4 +123,4 @@ "nodemailer-sendgrid-transport": "github:Maria-Golomb/nodemailer-sendgrid-transport", "sqlite3": "^5.1.6" } -} +} \ No newline at end of file diff --git a/src/activitypub/Server.ts b/src/activitypub/Server.ts new file mode 100644 index 00000000..492d43b6 --- /dev/null +++ b/src/activitypub/Server.ts @@ -0,0 +1,64 @@ +import { BodyParser, CORS, ErrorHandler } from "@spacebar/api"; +import { + Config, + JSONReplacer, + initDatabase, + registerRoutes, +} from "@spacebar/util"; +import { Request, Response, Router } from "express"; +import { Server, ServerOptions } from "lambert-server"; +import path from "path"; +import webfinger from "./webfinger"; + +export class APServer extends Server { + public declare options: ServerOptions; + + constructor(opts?: Partial) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + super({ ...opts, errorHandler: false, jsonBody: false }); + } + + async start() { + await initDatabase(); + await Config.init(); + + this.app.set("json replacer", JSONReplacer); + + this.app.use(CORS); + this.app.use(BodyParser({ inflate: true, limit: "10mb" })); + + const api = Router(); + const app = this.app; + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + // lambert server is lame + this.app = api; + + this.routes = await registerRoutes( + this, + path.join(__dirname, "routes", "/"), + ); + + api.use("*", (req: Request, res: Response) => { + res.status(404).json({ + message: "404 endpoint not found", + code: 0, + }); + }); + + this.app = app; + + this.app.use("/fed", api); + this.app.get("/fed", (req, res) => { + res.json({ ping: "pong" }); + }); + + this.app.use("/.well-known/webfinger", webfinger); + + this.app.use(ErrorHandler); + + return super.start(); + } +} diff --git a/src/activitypub/index.ts b/src/activitypub/index.ts new file mode 100644 index 00000000..7513bd2f --- /dev/null +++ b/src/activitypub/index.ts @@ -0,0 +1 @@ +export * from "./Server"; diff --git a/src/activitypub/routes/channel/#channel_id/index.ts b/src/activitypub/routes/channel/#channel_id/index.ts new file mode 100644 index 00000000..95495ffe --- /dev/null +++ b/src/activitypub/routes/channel/#channel_id/index.ts @@ -0,0 +1,30 @@ +import { route } from "@spacebar/api"; +import { Channel, Config } from "@spacebar/util"; +import { Request, Response, Router } from "express"; + +const router = Router(); +export default router; + +router.get("/", route({}), async (req: Request, res: Response) => { + const id = req.params.id; + + const channel = await Channel.findOneOrFail({ where: { id } }); + + const { webDomain } = Config.get().federation; + + return res.json({ + "@context": "https://www.w3.org/ns/activitystreams", + type: "Group", + id: `https://${webDomain}/fed/channel/${channel.id}`, + name: channel.name, + preferredUsername: channel.name, + summary: channel.topic, + icon: undefined, + + inbox: `https://${webDomain}/fed/channel/${channel.id}/inbox`, + outbox: `https://${webDomain}/fed/channel/${channel.id}/outbox`, + followers: `https://${webDomain}/fed/channel/${channel.id}/followers`, + following: `https://${webDomain}/fed/channel/${channel.id}/following`, + linked: `https://${webDomain}/fed/channel/${channel.id}/likeds`, + }); +}); diff --git a/src/activitypub/routes/channel/#channel_id/messages/#message_id/index.ts b/src/activitypub/routes/channel/#channel_id/messages/#message_id/index.ts new file mode 100644 index 00000000..6b806087 --- /dev/null +++ b/src/activitypub/routes/channel/#channel_id/messages/#message_id/index.ts @@ -0,0 +1,50 @@ +import { route } from "@spacebar/api"; +import { Config, Message } from "@spacebar/util"; +import { Request, Response, Router } from "express"; + +const router = Router(); +export default router; + +router.get("/", route({}), async (req: Request, res: Response) => { + const { channel_id, message_id } = req.params; + + const message = await Message.findOneOrFail({ + where: { id: message_id, channel_id }, + relations: { author: true, guild: true }, + }); + const { webDomain } = Config.get().federation; + + return res.json({ + "@context": "https://www.w3.org/ns/activitystreams", + id: "Announce", + actor: `https://${webDomain}/fed/user/${message.author!.id}`, + published: message.timestamp, + to: ["https://www.w3.org/ns/activitystreams#Public"], + cc: [ + message.author?.id + ? `https://${webDomain}/fed/users/${message.author.id}` + : undefined, + `https://${webDomain}/fed/channel/${channel_id}/followers`, + ], + object: { + id: `https://${webDomain}/fed/channel/${channel_id}/mesages/${message.id}`, + type: "Note", + summary: null, + inReplyTo: undefined, // TODO + published: message.timestamp, + url: `https://app.spacebar.chat/channels${ + message.guild?.id ? `/${message.guild.id}` : "" + }/${channel_id}/${message.id}`, + attributedTo: `https://${webDomain}/fed/user/${message.author!.id}`, + to: ["https://www.w3.org/ns/activitystreams#Public"], + cc: [ + message.author?.id + ? `https://${webDomain}/fed/users/${message.author.id}` + : undefined, + `https://${webDomain}/fed/channel/${channel_id}/followers`, + ], + sensitive: false, + content: message.content, + }, + }); +}); diff --git a/src/activitypub/routes/channel/#channel_id/outbox.ts b/src/activitypub/routes/channel/#channel_id/outbox.ts new file mode 100644 index 00000000..03a31253 --- /dev/null +++ b/src/activitypub/routes/channel/#channel_id/outbox.ts @@ -0,0 +1,76 @@ +import { route } from "@spacebar/api"; +import { Config, Message, Snowflake } from "@spacebar/util"; +import { Router } from "express"; +import { FindManyOptions, FindOperator, LessThan, MoreThan } from "typeorm"; + +const router = Router(); +export default router; + +router.get("/", route({}), async (req, res) => { + // TODO: authentication + + const { channel_id } = req.params; + const { page, min_id, max_id } = req.query; + + const { webDomain } = Config.get().federation; + + if (!page) + return res.json({ + "@context": "https://www.w3.org/ns/activitystreams", + id: `https://${webDomain}/fed/users/${channel_id}/outbox`, + type: "OrderedCollection", + first: `https://${webDomain}/fed/users/${channel_id}/outbox?page=true`, + last: `https://${webDomain}/fed/users/${channel_id}/outbox?page=true&min_id=0`, + }); + + const after = min_id ? `${min_id}` : undefined; + const before = max_id ? `${max_id}` : undefined; + + const query: FindManyOptions & { + where: { id?: FindOperator | FindOperator[] }; + } = { + order: { timestamp: "DESC" }, + take: 20, + where: { channel_id: channel_id }, + relations: ["author"], + }; + + if (after) { + if (BigInt(after) > BigInt(Snowflake.generate())) + return res.status(422); + query.where.id = MoreThan(after); + } else if (before) { + if (BigInt(before) > BigInt(Snowflake.generate())) + return res.status(422); + query.where.id = LessThan(before); + } + + const messages = await Message.find(query); + + return res.json({ + "@context": "https://www.w3.org/ns/activitystreams", + id: `https://${webDomain}/fed/channel/${channel_id}/outbox?page=true`, + type: "OrderedCollection", + next: `https://${webDomain}/fed/channel/${channel_id}/outbox?page=true&max_id=${ + messages[0]?.id || "0" + }`, + prev: `https://${webDomain}/fed/channel/${channel_id}/outbox?page=true&max_id=${ + messages[messages.length - 1]?.id || "0" + }`, + partOf: `https://${webDomain}/fed/channel/${channel_id}/outbox`, + orderedItems: messages.map((message) => ({ + id: `https://${webDomain}/fed/channel/${channel_id}/message/${message.id}`, + type: "Announce", // hmm + actor: `https://${webDomain}/fed/channel/${channel_id}`, + published: message.timestamp, + to: ["https://www.w3.org/ns/activitystreams#Public"], + cc: [ + message.author?.id + ? `https://${webDomain}/fed/users/${message.author.id}` + : undefined, + `https://${webDomain}/fed/channel/${channel_id}/followers`, + ], + object: `https://${webDomain}/fed/channel/${channel_id}/messages/${message.id}`, + })), + }); +}); diff --git a/src/activitypub/routes/user.ts b/src/activitypub/routes/user.ts new file mode 100644 index 00000000..838d14b7 --- /dev/null +++ b/src/activitypub/routes/user.ts @@ -0,0 +1,36 @@ +import { route } from "@spacebar/api"; +import { Config, User } from "@spacebar/util"; +import { Request, Response, Router } from "express"; + +const router = Router(); +export default router; + +router.get("/:id", route({}), async (req: Request, res: Response) => { + const id = req.params.name; + + const user = await User.findOneOrFail({ where: { id } }); + + const { webDomain } = Config.get().federation; + + return res.json({ + "@context": "https://www.w3.org/ns/activitystreams", + type: "Person", + id: `https://${webDomain}/fed/user/${user.id}`, + name: user.username, + preferredUsername: user.username, + summary: user.bio, + icon: user.avatar + ? [ + `${Config.get().cdn.endpointPublic}/avatars/${user.id}/${ + user.avatar + }`, + ] + : undefined, + + inbox: `https://${webDomain}/fed/user/${user.id}/inbox`, + outbox: `https://${webDomain}/fed/user/${user.id}/outbox`, + followers: `https://${webDomain}/fed/user/${user.id}/followers`, + following: `https://${webDomain}/fed/user/${user.id}/following`, + linked: `https://${webDomain}/fed/user/${user.id}/likeds`, + }); +}); diff --git a/src/activitypub/start.ts b/src/activitypub/start.ts new file mode 100644 index 00000000..3f28fa42 --- /dev/null +++ b/src/activitypub/start.ts @@ -0,0 +1,7 @@ +require("module-alias/register"); +import "dotenv/config"; +import { APServer } from "./Server"; + +const port = Number(process.env.PORT) || 3005; +const server = new APServer({ port }); +server.start().catch(console.error); diff --git a/src/activitypub/util/actor.ts b/src/activitypub/util/actor.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/activitypub/webfinger/index.ts b/src/activitypub/webfinger/index.ts new file mode 100644 index 00000000..0b82e103 --- /dev/null +++ b/src/activitypub/webfinger/index.ts @@ -0,0 +1,63 @@ +import { route } from "@spacebar/api"; +import { Channel, Config, User, WebfingerResponse } from "@spacebar/util"; +import { Request, Response, Router } from "express"; +import { HTTPError } from "lambert-server"; + +const router = Router(); +export default router; + +router.get( + "/", + route({ + query: { + resource: { + type: "string", + description: "Resource to locate", + }, + }, + responses: { + 200: { + body: "WebfingerResponse", + }, + }, + }), + async (req: Request, res: Response) => { + let resource = req.query.resource as string | undefined; + if (!resource) throw new HTTPError("Must specify resource"); + + // we know what you mean, bro + resource = resource.replace("acct:", ""); + + const [resourceId, resourceDomain] = resource.split("@"); + + const { webDomain } = Config.get().federation; + if (resourceDomain != webDomain) + throw new HTTPError("Resource could not be found", 404); + + const found = + (await User.findOne({ + where: { id: resourceId }, + select: ["id"], + })) || + (await Channel.findOne({ + where: { id: resourceId }, + select: ["id"], + })); + + if (!found) throw new HTTPError("Resource could not be found", 404); + + const type = found instanceof Channel ? "channel" : "user"; + + return res.json({ + subject: `acct:${resourceId}@${webDomain}`, // mastodon always returns acct so might as well + aliases: [`https://${webDomain}/fed/${type}/${resourceId}`], + links: [ + { + rel: "self", + type: "application/activity+json", + href: `https://${webDomain}/fed/${type}/${resourceId}`, + }, + ], + }); + }, +); diff --git a/src/bundle/Server.ts b/src/bundle/Server.ts index d281120d..d5e2d6de 100644 --- a/src/bundle/Server.ts +++ b/src/bundle/Server.ts @@ -19,13 +19,14 @@ process.on("unhandledRejection", console.error); process.on("uncaughtException", console.error); -import http from "http"; +import { APServer } from "@spacebar/ap"; import * as Api from "@spacebar/api"; -import * as Gateway from "@spacebar/gateway"; import { CDNServer } from "@spacebar/cdn"; +import * as Gateway from "@spacebar/gateway"; +import { Config, Sentry, initDatabase } from "@spacebar/util"; import express from "express"; -import { green, bold } from "picocolors"; -import { Config, initDatabase, Sentry } from "@spacebar/util"; +import http from "http"; +import { bold, green } from "picocolors"; const app = express(); const server = http.createServer(); @@ -36,12 +37,14 @@ server.on("request", app); const api = new Api.SpacebarServer({ server, port, production, app }); const cdn = new CDNServer({ server, port, production, app }); const gateway = new Gateway.Server({ server, port, production }); +const activitypub = new APServer({ server, port, production, app }); process.on("SIGTERM", async () => { console.log("Shutting down due to SIGTERM"); await gateway.stop(); await cdn.stop(); await api.stop(); + activitypub.stop(); server.close(); Sentry.close(); }); @@ -54,7 +57,12 @@ async function main() { await new Promise((resolve) => server.listen({ port }, () => resolve(undefined)), ); - await Promise.all([api.start(), cdn.start(), gateway.start()]); + await Promise.all([ + api.start(), + cdn.start(), + gateway.start(), + activitypub.start(), + ]); Sentry.errorHandler(app); diff --git a/src/util/config/Config.ts b/src/util/config/Config.ts index 90b98b7a..0b3a4152 100644 --- a/src/util/config/Config.ts +++ b/src/util/config/Config.ts @@ -38,6 +38,7 @@ import { SentryConfiguration, TemplateConfiguration, } from "../config"; +import { FederationConfiguration } from "./types/FederationConfiguration"; export class ConfigValue { gateway: EndpointConfiguration = new EndpointConfiguration(); @@ -61,4 +62,5 @@ export class ConfigValue { email: EmailConfiguration = new EmailConfiguration(); passwordReset: PasswordResetConfiguration = new PasswordResetConfiguration(); + federation = new FederationConfiguration(); } diff --git a/src/util/config/types/FederationConfiguration.ts b/src/util/config/types/FederationConfiguration.ts new file mode 100644 index 00000000..b04388fd --- /dev/null +++ b/src/util/config/types/FederationConfiguration.ts @@ -0,0 +1,5 @@ +export class FederationConfiguration { + enabled: boolean = false; + localDomain: string | null = null; + webDomain: string | null = null; +} diff --git a/src/util/schemas/responses/WebfingerResponse.ts b/src/util/schemas/responses/WebfingerResponse.ts new file mode 100644 index 00000000..a3186a03 --- /dev/null +++ b/src/util/schemas/responses/WebfingerResponse.ts @@ -0,0 +1,12 @@ +interface WebfingerLink { + rel: string; + type: string; + href: string; + template?: string; +} + +export interface WebfingerResponse { + subject: string; + aliases: string[]; + links: WebfingerLink[]; +} diff --git a/src/util/schemas/responses/index.ts b/src/util/schemas/responses/index.ts index d8b7fd57..66b9986b 100644 --- a/src/util/schemas/responses/index.ts +++ b/src/util/schemas/responses/index.ts @@ -28,7 +28,8 @@ export * from "./TypedResponses"; export * from "./UpdatesResponse"; export * from "./UserNoteResponse"; export * from "./UserProfileResponse"; -export * from "./UserRelationshipsResponse"; export * from "./UserRelationsResponse"; +export * from "./UserRelationshipsResponse"; export * from "./WebAuthnCreateResponse"; +export * from "./WebfingerResponse"; export * from "./WebhookCreateResponse"; diff --git a/tsconfig.json b/tsconfig.json index 63b5e96c..1ced0e3c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -37,7 +37,8 @@ "@spacebar/api*": ["./api"], "@spacebar/gateway*": ["./gateway"], "@spacebar/cdn*": ["./cdn"], - "@spacebar/util*": ["./util"] + "@spacebar/util*": ["./util"], + "@spacebar/ap*": ["./activitypub"] } /* Specify a set of entries that re-map imports to additional lookup locations. */, // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */