contentMediaType on multipart file fields generates string instead of Blob | File (OpenAPI 3.1 / FastAPI)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 68/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- openapi, typescript
- Área
- tooling
Línea de trabajo
Start at the TypeScript schema type-generation path and reproduce the issue with the provided OpenAPI 3.1 multipart schema. Trace how contentMediaType and format: binary are handled; done means file-like content media types generate Blob or Blob | File while other string fields remain strings, with the generated type checking for the shown consumer code.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
When an OpenAPI 3.1 spec describes a multipart file upload using contentMediaType (the OpenAPI 3.1 pattern), @openapi-codegen/typescript generates string instead of Blob (or Blob | File). This breaks TypeScript consumers that pass File objects to generated mutation hooks.
format: binary is handled correctly and maps to Blob.
Environment
@openapi-codegen/cli: 3.1.0@openapi-codegen/typescript: 11.1.0- OpenAPI source: FastAPI app (
app.openapi()), OpenAPI 3.1 - FastAPI: ≥ 0.129 (uses
contentMediaTypeforUploadFileinstead offormat: binary)
Reproduction
OpenAPI schema (multipart upload):
{
"components": {
"schemas": {
"Body_upload_proposal_document": {
"type": "object",
"required": ["document", "opportunity_id"],
"properties": {
"document": {
"type": "string",
"contentMediaType": "application/octet-stream",
"description": "Proposal document file"
},
"opportunity_id": {
"type": "string"
}
}
}
}
}
}
Generated today:
export type BodyUploadProposalDocument = {
document: string; // ❌
opportunity_id: string;
};
Expected:
export type BodyUploadProposalDocument = {
document: Blob | File; // or Blob
opportunity_id: string;
};
Consumer code that fails typecheck:
await uploadMutation.mutateAsync({
body: {
document: file, // File — TS2322: Type 'File' is not assignable to type 'string'
opportunity_id: opportunityId,
},
});
Context
- OpenAPI 3.1 uses
contentMediaTypeon schema properties for binary/multipart fields (migration guide). - FastAPI adopted this in fastapi#14953 (≥ 0.129.1).
- Other generators have addressed the same gap (e.g. hey-api/openapi-ts#3408, orval#2636).
Suggested fix
In schema type generation, when a property has:
type: string(or no explicit type), andcontentMediaTypematching a file-like MIME type (application/octet-stream,image/*, etc.),
treat it the same as format: binary and emit Blob or Blob | File.
- Lenguaje dominante
- TypeScript
- Estrellas
- 634
- Forks
- 83
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de fabien0102/openapi-codegen
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
fabien0102/openapi-codegen#343 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
fabien0102/openapi-codegen#342 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
fabien0102/openapi-codegen#356 ·
-
update dependencies & removed unused deprecatedPosiblemente ocupada @el-j la tomó hace 2 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
fabien0102/openapi-codegen#354 ·
-
deepMerge mutates its arguments, corrupting request payloads across callsPosiblemente ocupada @richard-willis-chevin la tomó hace 46 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
fabien0102/openapi-codegen#349 ·
Todos los issues de fabien0102/openapi-codegen
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
MystenLabs/MemWal#1163 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Mondriaan
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
knaw-huc/textannoviz#709 ·
Los mantenedores suelen responder en 1 día
-
billion-context-pi
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
ranxianglei/billion-context#2521 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Add: YRF Music NepalAbiertostreams:add
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100