DateTime(format="timestamp") generates invalid OpenAPI schema using min instead of minimum
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 88/100
Línea de trabajo
El issue identifica field_converter.py como el origen de la generación del esquema para timestamp y timestamp_ms. Reproduce el ejemplo mínimo, inspecciona ambas ramas y verifica que el esquema generado use la restricción numérica válida de OpenAPI y supere la validación de la especificación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
apispec generates an invalid OpenAPI schema for marshmallow.fields.DateTime(format="timestamp").
The generated schema contains the min property:
changedOn:
type: number
format: float
example: "1676451245.596"
min: "0"
However, min is not a valid OpenAPI Schema Object property. As a result, the generated specification fails validation with openapi-spec-validator:
OpenAPIValidationError:
Property 'min' is not allowed
This was reproduced with:
- apispec 6.10.0
- marshmallow 3.26.2
- openapi-spec-validator 0.9.0
- OpenAPI 3.0.2
Expected behavior
The generated schema should use the standard OpenAPI keyword minimum instead of min, for example:
changedOn:
type: number
format: float
example: "1676451245.596"
minimum: 0
or omit the constraint entirely if no minimum value is intended.
Minimal reproduction
from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
from marshmallow import Schema, fields
from pprint import pprint
class TestSchema(Schema):
ts = fields.DateTime(format="timestamp")
spec = APISpec(
title="test",
version="1.0",
openapi_version="3.0.2",
plugins=[MarshmallowPlugin()],
)
spec.components.schema("Test", schema=TestSchema)
pprint(spec.to_dict()["components"]["schemas"]["Test"])
Output:
{'additionalProperties': False,
'properties': {'ts': {'example': '1676451245.596',
'format': 'float',
'min': '0',
'type': 'number'}},
'type': 'object'}
The file field_converter.py contains the code that causes this issue:
elif field.format == "timestamp":
ret = {
"type": "number",
"format": "float",
"example": "1676451245.596",
"min": "0",
}
elif field.format == "timestamp_ms":
ret = {
"type": "number",
"format": "float",
"example": "1676451277514.654",
"min": "0",
}
Specification reference
The OpenAPI Schema Object defines the numeric constraint keyword as minimum; min is not a valid keyword.
OpenAPI 3.0.2 Schema Object:
https://spec.openapis.org/oas/v3.0.2#schema-object
- Lenguaje dominante
- Python
- Estrellas
- 1.2k
- Forks
- 210
- Merge medio
- 2 d 1 h
- PR fusionados (30 d)
- 4
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 marshmallow-code/apispec
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
marshmallow-code/apispec#750 · 1 comentario · 5 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dependency DashboardAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 30/100
marshmallow-code/apispec#1033 ·
Los mantenedores suelen responder en 1 día
-
`apispec` ignores `oneOf` from `marshmallow-oneofschema`Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
marshmallow-code/apispec#1012 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
-
Support Overlays standardAbiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
marshmallow-code/apispec#981 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Date and DateTime with format argument not rendered correctlyPosiblemente ocupada @jbbqqf la tomó hace 173 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 30/100
marshmallow-code/apispec#938 · 1 reacción ·
Los mantenedores suelen responder en 1 día
Todos los issues de marshmallow-code/apispec
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
btclib-org/btclib#3062 ·
Los mantenedores suelen responder en 1 día
-
Run evals automatically in CIAbiertoarea:evals area:infra enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
jse-avl/support-bot#4 · 1 comentario ·
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
qte77/agentic-job-offer-to-application-kit#487 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
On a free-threaded build, `_decrypted` can report a ledger locked mid-sign as a damaged fileAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
btclib-org/btclib-wallet#801 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue
Dificultad 1/5 1-3 horas Aptitud para principiantes 94/100