DateTime(format="timestamp") generates invalid OpenAPI schema using min instead of minimum

Abierto Apto para principiantes
#1,064 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Sanjays2402 ya está trabajando en esto.

Desde el 1/8/2026.

  • #1067 de @Sanjays2402 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
88/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
openapi, python
Área
api

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

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 marshmallow-code/apispec

Todos los issues de marshmallow-code/apispec

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.