- CRUD completo (GET, POST, PUT, DELETE)
- Relaciones nivel 2 con
$expand(multi-nivel:owner.address) -
$select— selección de campos (compatible con$expand) -
$orderby— ordenamiento multi-campo -
$limit/$offset— paginación - Response schemas — modelos parciales como filtro de salida
- Error response schemas — modelos de error con
defaultvalues - Composite keys — PKs multi-columna
- Smart mapping — array ↔ JSON string auto-serialización
- Status codes personalizados (201, 204, etc.)
- Sub-routers — rutas anidadas (
/users/{id}/roles) - Tipos: String, Integer, Long, Boolean, Date, DateTime, Decimal, Float, Array
- PATCH — Solo hay PUT (replace). Falta PATCH (partial update)
- Request validation —
required,minLength,maxLength,enum,patterndel OpenAPI → generarField()de Pydantic - Pagination metadata — Devuelve
[{...}]crudo. Debería ser{data:[], total:N, limit, offset}
- Filtering por campos —
?status=active&name=John. No existe filtrado dinámico - Request body parcial — POST/PUT siempre usa modelo completo. Debería respetar el
requestBodydel OpenAPI (misma lógica que response schemas) - Enum types — Si OpenAPI define
enum: [active, inactive], generar Python Enum
- Auth/Security schemes —
bearerAuth,apiKeydel OpenAPI - File upload —
multipart/form-data - Soft delete — patrón de borrado lógico
- Búsqueda — full-text search