Skip to content
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

[BUG] [OpenAPI 3.1] siblings of $ref are lost #20304

Open
5 of 6 tasks
Felk opened this issue Dec 12, 2024 · 0 comments
Open
5 of 6 tasks

[BUG] [OpenAPI 3.1] siblings of $ref are lost #20304

Felk opened this issue Dec 12, 2024 · 0 comments

Comments

@Felk
Copy link
Contributor

Felk commented Dec 12, 2024

Bug Report Checklist

Description

Starting with OpenAPI 3.1, it is allowed for $ref-objects to have sibling properties and those sibling properties should not be lost. A simple example would be:

components:
  schemas:
    ModelWithTitledProperties:
      properties:
        refProperty:
          type: string
          title: Ref-Property-Title
          $ref: '#/components/schemas/RefObject'
      type: object
    RefObject:
      type: string

Expected: when generating code, I have access to refProperty's title field.
Reality: The value of title (and other fields, such as description) are lost.

For example, if I try to generate TypeScript code that includes a model's title using a custom template (but the issue is not TypeScript-specific):

export const {{classname}}Meta = {
{{#vars}}
    {{name}}: {
        title: `{{{title}}}`,
        description: `{{{description}}}`
    },
{{/vars}}
} as const;

this works for regular properties, but title and description are always empty for properties that include a $ref.

openapi-generator version

7.10.0 (actually latest master, d29196a).
As far as I understand, this is not a regression, but just a yet undetected bug for OpenAPI 3.1 schemas.

Steps to reproduce

I opened a complimentary pull request that adds a test case showcasing the problem: #20303

Suggest a fix

Best lead I found while debugging was that ModelUtils#unaliasSchema seems to just 100% forward the $ref'ed schema if it detects a ref that doesn't fall into one of the special cases like isObjectSchema(...).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant