diff --git a/src/services/OpenAPIParser.ts b/src/services/OpenAPIParser.ts index 399ce1d5..4881c99e 100644 --- a/src/services/OpenAPIParser.ts +++ b/src/services/OpenAPIParser.ts @@ -195,7 +195,7 @@ export class OpenAPIParser { } if (mergeAsAllOf && keys.some((k) => k !== 'description' && k !== 'title' && k !== 'externalDocs')) { return { - allOf: [resolved, rest], + allOf: [rest, resolved], }; } else { // small optimization diff --git a/src/services/models/Schema.ts b/src/services/models/Schema.ts index 81dc7ee3..b155d254 100644 --- a/src/services/models/Schema.ts +++ b/src/services/models/Schema.ts @@ -80,7 +80,7 @@ export class SchemaModel { makeObservable(this); this.pointer = schemaOrRef.$ref || pointer || ''; - this.rawSchema = parser.shallowDeref(schemaOrRef); + this.rawSchema = parser.deref(schemaOrRef, false, true); this.schema = parser.mergeAllOf(this.rawSchema, this.pointer, isChild); this.init(parser, isChild); @@ -363,7 +363,7 @@ function buildFields( ): FieldModel[] { const props = schema.properties || {}; const additionalProps = schema.additionalProperties; - const defaults = schema.default || {}; + const defaults = schema.default; let fields = Object.keys(props || []).map((fieldName) => { let field = props[fieldName]; @@ -384,7 +384,7 @@ function buildFields( required, schema: { ...field, - default: field.default === undefined ? defaults[fieldName] : field.default, + default: field.default === undefined && defaults ? defaults[fieldName] : field.default, }, }, $ref + '/properties/' + fieldName,