diff --git a/assets/openapi.json b/assets/openapi.json
index 069eaced..7e1f3cac 100644
--- a/assets/openapi.json
+++ b/assets/openapi.json
@@ -20,15 +20,13 @@
}
},
"components": {
- "securitySchemes": [
- {
- "bearer": {
- "type": "http",
- "scheme": "bearer",
- "description": "Bearer/Bot prefixes are not required."
- }
+ "securitySchemes": {
+ "bearer": {
+ "type": "http",
+ "scheme": "bearer",
+ "description": "Bearer/Bot prefixes are not required."
}
- ],
+ },
"schemas": {
"SelectProtocolSchema": {
"type": "object",
diff --git a/assets/schemas.json b/assets/schemas.json
index a0c6d173..3c7e60a8 100644
--- a/assets/schemas.json
+++ b/assets/schemas.json
@@ -26292,8 +26292,14 @@
"type": "boolean"
},
"mute_config": {
- "nullable": true,
- "$ref": "#/definitions/MuteConfig"
+ "anyOf": [
+ {
+ "$ref": "#/definitions/MuteConfig"
+ },
+ {
+ "type": "null"
+ }
+ ]
},
"muted": {
"type": "boolean"
@@ -28417,8 +28423,14 @@
"type": "boolean"
},
"custom_status": {
- "nullable": true,
- "$ref": "#/definitions/CustomStatus"
+ "anyOf": [
+ {
+ "$ref": "#/definitions/CustomStatus"
+ },
+ {
+ "type": "null"
+ }
+ ]
},
"default_guilds_restricted": {
"type": "boolean"
diff --git a/scripts/openapi.js b/scripts/openapi.js
index 86297967..889a68cb 100644
--- a/scripts/openapi.js
+++ b/scripts/openapi.js
@@ -16,6 +16,8 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
+/* eslint-env node */
+
require("module-alias/register");
const getRouteDescriptions = require("./util/getRouteDescriptions");
const path = require("path");
@@ -27,7 +29,31 @@ require("missing-native-js-functions");
const openapiPath = path.join(__dirname, "..", "assets", "openapi.json");
const SchemaPath = path.join(__dirname, "..", "assets", "schemas.json");
-const schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" }));
+let schemas = JSON.parse(fs.readFileSync(SchemaPath, { encoding: "utf8" }));
+
+for (var schema in schemas) {
+ const part = schemas[schema];
+ for (var key in part.properties) {
+ if (part.properties[key].anyOf) {
+ const nullIndex = part.properties[key].anyOf.findIndex(
+ (x) => x.type == "null",
+ );
+ if (nullIndex != -1) {
+ part.properties[key].nullable = true;
+ part.properties[key].anyOf.splice(nullIndex, 1);
+
+ if (part.properties[key].anyOf.length == 1) {
+ Object.assign(
+ part.properties[key],
+ part.properties[key].anyOf[0],
+ );
+ delete part.properties[key].anyOf;
+ }
+ }
+ }
+ }
+}
+
const specification = JSON.parse(
fs.readFileSync(openapiPath, { encoding: "utf8" }),
);
@@ -85,15 +111,13 @@ function apiRoutes() {
.map((x) => ({ name: x }));
specification.components = specification.components || {};
- specification.components.securitySchemes = [
- {
- bearer: {
- type: "http",
- scheme: "bearer",
- description: "Bearer/Bot prefixes are not required.",
- },
+ specification.components.securitySchemes = {
+ bearer: {
+ type: "http",
+ scheme: "bearer",
+ description: "Bearer/Bot prefixes are not required.",
},
- ];
+ };
routes.forEach((route, pathAndMethod) => {
const [p, method] = pathAndMethod.split("|");
diff --git a/scripts/schema.js b/scripts/schema.js
index bd0f73d3..ae4b525a 100644
--- a/scripts/schema.js
+++ b/scripts/schema.js
@@ -20,6 +20,8 @@
Regenerates the `fosscord-server/assets/schemas.json` file, used for API/Gateway input validation.
*/
+/* eslint-env node */
+
const path = require("path");
const fs = require("fs");
const TJS = require("typescript-json-schema");
@@ -110,23 +112,23 @@ function main() {
continue;
}
- if (part.properties[key].anyOf) {
- const nullIndex = part.properties[key].anyOf.findIndex(
- (x) => x.type == "null",
- );
- if (nullIndex != -1) {
- part.properties[key].nullable = true;
- part.properties[key].anyOf.splice(nullIndex, 1);
-
- if (part.properties[key].anyOf.length == 1) {
- Object.assign(
- part.properties[key],
- part.properties[key].anyOf[0],
- );
- delete part.properties[key].anyOf;
- }
- }
- }
+ // if (part.properties[key].anyOf) {
+ // const nullIndex = part.properties[key].anyOf.findIndex(
+ // (x) => x.type == "null",
+ // );
+ // if (nullIndex != -1) {
+ // part.properties[key].nullable = true;
+ // part.properties[key].anyOf.splice(nullIndex, 1);
+
+ // if (part.properties[key].anyOf.length == 1) {
+ // Object.assign(
+ // part.properties[key],
+ // part.properties[key].anyOf[0],
+ // );
+ // delete part.properties[key].anyOf;
+ // }
+ // }
+ // }
}
}
|