Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 13 additions & 3 deletions pkg/codegen/merge_schemas.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,19 @@ func mergeOpenapiSchemas(s1, s2 openapi3.Schema, allOf bool) (openapi3.Schema, e
}
}

// Allow discriminators for allOf merges, but disallow for one/anyOfs.
if !allOf && (s1.Discriminator != nil || s2.Discriminator != nil) {
return openapi3.Schema{}, errors.New("merging two schemas with discriminators is not supported")
if s1.Discriminator != nil || s2.Discriminator != nil {
// Allow discriminators for allOf merges, but disallow for one/anyOfs, and disallow conflicting discriminators
if !allOf || (s1.Discriminator != nil && s2.Discriminator != nil) {
return openapi3.Schema{}, errors.New("merging two schemas with discriminators is not supported")
}

if s1.Discriminator != nil && s2.Discriminator == nil {
result.Discriminator = s1.Discriminator
result.OneOf = s1.OneOf
} else if s1.Discriminator == nil && s2.Discriminator != nil {
result.Discriminator = s2.Discriminator
result.OneOf = s2.OneOf
}
}

return result, nil
Expand Down