OpenAPITools / OpenAPITools/openapi-generator

[BUG][GO] oneOf with enum values is not properly parsed for response body.

Open
#14,256 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Issue: Bug
Dominant language
Java
Stars
26.8k
Forks
7.7k
PR merge metrics
PR metrics pending

Description

Bug Report Checklist
  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

When schema contains multiple enum string values oneOf with enums. For example:

        actionType:
          type: object 
          oneOf:
            - type: string
              enum:
              - Max
              - Min
              - Top

Parsing response from backend fail as field is represented by number of structures but parser expects string.
I think template would need to be changed to support this use case specifically.

Workaround for that would be to use swagger-core allowedValues - however when we do that and list those inline to the response OpenAPI generator ignores them and sets type as *string.

openapi-generator version

Master/6.2.1

OpenAPI declaration file content or url

If you post the code inline, please wrap it with

        actionType:
          type: object 
          oneOf:
            - type: string
              enum:
              - Max
              - Min
              - Top
Generation Details
Steps to reproduce
Related issues/PRs
Suggest a fix

Marshal function for oneOf should handle this case detecting if type is enum.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Go generator's response-body parsing and Marshal handling for oneOf schemas, using the inline actionType schema as the reproduction case. Trace how enum members are represented during generation and parsing; done means a response containing the enum values Max, Min, or Top is parsed correctly instead of being treated as a string or multiple structures.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.