summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/openapi/schemas.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/server/api/openapi/schemas.ts')
-rw-r--r--packages/backend/src/server/api/openapi/schemas.ts10
1 files changed, 8 insertions, 2 deletions
diff --git a/packages/backend/src/server/api/openapi/schemas.ts b/packages/backend/src/server/api/openapi/schemas.ts
index 1a1d973e56..2716f5f162 100644
--- a/packages/backend/src/server/api/openapi/schemas.ts
+++ b/packages/backend/src/server/api/openapi/schemas.ts
@@ -7,10 +7,16 @@ import type { Schema } from '@/misc/json-schema.js';
import { refs } from '@/misc/json-schema.js';
export function convertSchemaToOpenApiSchema(schema: Schema) {
- const res: any = schema;
+ // optional, refはスキーマ定義に含まれないので分離しておく
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const { optional, ref, ...res }: any = schema;
if (schema.type === 'object' && schema.properties) {
- res.required = Object.entries(schema.properties).filter(([k, v]) => !v.optional).map(([k]) => k);
+ const required = Object.entries(schema.properties).filter(([k, v]) => !v.optional).map(([k]) => k);
+ if (required.length > 0) {
+ // 空配列は許可されない
+ res.required = required;
+ }
for (const k of Object.keys(schema.properties)) {
res.properties[k] = convertSchemaToOpenApiSchema(schema.properties[k]);