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

Abierto
#25,635 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Justineo ya está trabajando en esto.

Desde el 12/11/2026.

  • #25636 de @Justineo — abierto

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
openapi, typescript

Línea de trabajo

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.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.

Lenguaje dominante
Java
Estrellas
26.9k
Forks
7.8k
Merge medio
2 d 10 h
PR fusionados (30 d)
180

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de OpenAPITools/openapi-generator

Todos los issues de OpenAPITools/openapi-generator

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.