[BUG][typescript-axios] oneOf models drop sibling properties

Ouverte
#25,635 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@Justineo y travaille déjà.

Depuis le 12/11/2026.

  • #25636 par @Justineo — ouverte

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
openapi, typescript

Piste de recherche

Start with the standalone fixture at modules/openapi-generator/src/test/resources/3_0/typescript-axios/oneof-sibling-properties.yaml and the TypeScript Axios generator tests, especially TypeScriptAxiosClientCodegenTest. Compare generated Receipt and TaggedReceipt with the expected sibling properties, then trace how oneOf models are rendered and how sibling properties, enums, and referenced models are represented. Done means the regression cases pass without requiring properties from the oneOf branches.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Bug Report Checklist
  • Provided a minimal, standalone spec.
  • Validated the input with the generator's validate command (no validation errors; one unused-model recommendation).
  • Reproduced with the latest master.
  • Searched related issues and PRs.
  • Included actual and expected output.
Description

The typescript-axios generator drops properties declared alongside oneOf. For example, a response schema can add an id to alternatives that are also used as request bodies:

Receipt:
  type: object
  required: [id]
  properties:
    id:
      type: string
  oneOf:
    - $ref: '#/components/schemas/TextSubmission'
    - $ref: '#/components/schemas/LinkSubmission'

Actual:

export type Receipt = LinkSubmission | TextSubmission;

Expected:

export type Receipt = (LinkSubmission | TextSubmission) & {
    'id': string;
};

The missing property prevents consumers from reading response.data.id through the generated SDK. Adding it to the shared alternatives would incorrectly require response metadata in request bodies.

openapi-generator version

Reproduced with 7.27.0 and master at df804ac9802fba0c51a64f8c3cb03191ed3dde2d (7.28.0-SNAPSHOT). Four regression cases fail against unmodified master: combined/separate model files, each with constant-object/string enums. The other 15 tests in TypeScriptAxiosClientCodegenTest pass.

OpenAPI declaration file content or url

Standalone OpenAPI 3.0.3 fixture

The fixture also covers enum properties, a referenced sibling model, nullable optional properties, and a discriminator.

Generation Details
java -jar openapi-generator-cli.jar generate \
  -g typescript-axios \
  -i oneof-sibling-properties.yaml \
  -o generated
Steps to reproduce
  1. Download the standalone fixture.
  2. Generate with the command above.
  3. Inspect Receipt and TaggedReceipt in generated/api.ts: their sibling fields are missing.
Related issues/PRs

Searched the TypeScript Axios composition issues and PRs, including #8894 (anyOf semantics) and #22870 (additional composition tests). Those address different cases.

Suggest a fix

Render the union as an intersection with only its sibling properties. The internal vars list also contains branch properties, so rendering all of it would incorrectly require fields from every alternative. Preserve enum declarations and imports for referenced sibling models.

AI disclosure — Codex

Codex investigated the generator, prepared the standalone reproduction, ran the checks above, and drafted this report. I supplied the problem and requested an upstream fix.

Langage dominant
Java
Étoiles
26.9k
Forks
7.8k
Merge moyen
2 j 10 h
PR mergées (30 j)
180

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de OpenAPITools/openapi-generator

Toutes les issues de OpenAPITools/openapi-generator

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.