Skip to content

Open Api Generator having issues with api.github.com.json #4815

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
joseVega33 opened this issue May 7, 2025 · 0 comments
Open

Open Api Generator having issues with api.github.com.json #4815

joseVega33 opened this issue May 7, 2025 · 0 comments
Labels
fundamentals-and-support Added by Howie to auto-add issues to API Platform KTLO project

Comments

@joseVega33
Copy link

joseVega33 commented May 7, 2025

Issue

We were using the Open Api Generator(OAG) to generate some Java models based on the current OAS schema JSON . This generates a wrong-named model when it's doing the ContentDirectory Schema Model, which is called from here

"application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/content-directory"
                    },
                    {
                      "$ref": "#/components/schemas/content-file"
                    },
                    {
                      "$ref": "#/components/schemas/content-symlink"
                    },
                    {
                      "$ref": "#/components/schemas/content-submodule"
                    }
                  ],
                  "discriminator": {
                    "propertyName": "type",
                    "mapping": {
                      "array": "#/components/schemas/content-directory",
                      "file": "#/components/schemas/content-file",
                      "symlink": "#/components/schemas/content-symlink",
                      "submodule": "#/components/schemas/content-submodule"
                    }
                  }
                }

Possible solution

To patch the bug, I've changed the definition of the schema to avoid the wrong-named model issue. This happens because when OAG couldn't figure out the logic or a declaration, it generates a utility model to patch this issue.
Here is the original ContentDirectory declaration:

"content-directory": {
        "title": "Content Directory",
        "description": "A list of directory items",
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "dir",
                "file",
                "submodule",
                "symlink"
              ]
            },
            "size": {
              "type": "integer"
            },
            "name": {
              "type": "string"
            },
            "path": {
              "type": "string"
            },
            "content": {
              "type": "string"
            },
            "sha": {
              "type": "string"
            },
            "url": {
              "type": "string",
              "format": "uri"
            },
            "git_url": {
              "type": "string",
              "format": "uri",
              "nullable": true
            },
            "html_url": {
              "type": "string",
              "format": "uri",
              "nullable": true
            },
            "download_url": {
              "type": "string",
              "format": "uri",
              "nullable": true
            },
            "_links": {
              "type": "object",
              "properties": {
                "git": {
                  "type": "string",
                  "format": "uri",
                  "nullable": true
                },
                "html": {
                  "type": "string",
                  "format": "uri",
                  "nullable": true
                },
                "self": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "git",
                "html",
                "self"
              ]
            }
          },
          "required": [
            "_links",
            "git_url",
            "html_url",
            "download_url",
            "name",
            "path",
            "sha",
            "size",
            "type",
            "url"
          ]
        }
      }

And here is the modified declaration that we used to patch the issue.

"content-directory": {
  "title": "Content Directory",
  "description": "A list of directory items",
    "type": "object",
    "properties": {
      "type": {
        "type": "string",
        "enum": [
          "array"
        ]
      },
      "size": {
        "type": "integer"
      },
      "name": {
        "type": "string"
      },
      "path": {
        "type": "string"
      },
      "content": {
        "type": "string"
      },
      "sha": {
        "type": "string"
      },
      "url": {
        "type": "string",
        "format": "uri"
      },
      "git_url": {
        "type": "string",
        "format": "uri",
        "nullable": true
      },
      "html_url": {
        "type": "string",
        "format": "uri",
        "nullable": true
      },
      "download_url": {
        "type": "string",
        "format": "uri",
        "nullable": true
      },
      "_links": {
        "type": "object",
        "properties": {
          "git": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "html": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "self": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "git",
          "html",
          "self"
        ]
      }
    },
    "required": [
      "_links",
      "git_url",
      "html_url",
      "download_url",
      "name",
      "path",
      "sha",
      "size",
      "type",
      "url"
    ]
}

This is the OAG version used to generate the model: 7.11.0
and the config used in the generator:

openApiGenerate {
    generatorName.set("java")
    inputSpec.set("$projectDir/src/main/resources/api.github.com.fixed.json")
    outputDir.set("$buildDir")
    apiPackage.set("com.github.client.api")
    modelPackage.set("com.github.client.model")
    configOptions.put("dateLibrary", "java8")
    ignoreFileOverride.value("$projectDir/.openapi-generator-ignore")
    configOptions.put("library", "apache-httpclient")
    configOptions.put("sourceFolder", "generated/main/java")
    configOptions.put("openApiNullable", "false")
    configOptions.put("invokerPackage", "com.github.client")
}
@howie-work howie-work bot added the fundamentals-and-support Added by Howie to auto-add issues to API Platform KTLO project label May 15, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
fundamentals-and-support Added by Howie to auto-add issues to API Platform KTLO project
Projects
None yet
Development

No branches or pull requests

1 participant