summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/openapi
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/server/api/openapi')
-rw-r--r--packages/backend/src/server/api/openapi/gen-spec.ts3
-rw-r--r--packages/backend/src/server/api/openapi/schemas.ts9
2 files changed, 6 insertions, 6 deletions
diff --git a/packages/backend/src/server/api/openapi/gen-spec.ts b/packages/backend/src/server/api/openapi/gen-spec.ts
index ea64e32ee6..e1dead07cf 100644
--- a/packages/backend/src/server/api/openapi/gen-spec.ts
+++ b/packages/backend/src/server/api/openapi/gen-spec.ts
@@ -89,7 +89,8 @@ export function genOpenapiSpec(config: Config, includeSelfRef = false) {
schema.required = undefined;
}
- const hasBody = (schema.type === 'object' && schema.properties && Object.keys(schema.properties).length >= 1);
+ const hasBody = (schema.type === 'object' && schema.properties && Object.keys(schema.properties).length >= 1)
+ || ['allOf', 'oneOf', 'anyOf'].some(o => (Array.isArray(schema[o]) && schema[o].length >= 0));
const info = {
operationId: endpoint.name.replaceAll('/', '___'), // NOTE: スラッシュは使えない
diff --git a/packages/backend/src/server/api/openapi/schemas.ts b/packages/backend/src/server/api/openapi/schemas.ts
index c80dda8d96..1cdcbebd1a 100644
--- a/packages/backend/src/server/api/openapi/schemas.ts
+++ b/packages/backend/src/server/api/openapi/schemas.ts
@@ -38,14 +38,13 @@ export function convertSchemaToOpenApiSchema(schema: Schema, type: 'param' | 're
if (type === 'res' && schema.ref && (!schema.selfRef || includeSelfRef)) {
const $ref = `#/components/schemas/${schema.ref}`;
- if (schema.nullable || schema.optional) {
- res.allOf = [{ $ref }];
+ if (schema.nullable) {
+ res.oneOf = [{ $ref }, { type: 'null' }];
} else {
res.$ref = $ref;
}
- }
-
- if (schema.nullable) {
+ delete res.type;
+ } else if (schema.nullable) {
if (Array.isArray(schema.type) && !schema.type.includes('null')) {
res.type.push('null');
} else if (typeof schema.type === 'string') {