postprocess-openapi: strip empty required: [] arrays
oatpp 1.3 emits `"required": []` on schemas with no required fields. OpenAPI 3.0.x rejects this with "must NOT have fewer than 1 items", which silently breaks strict consumers. Orval's typed fetch client swallowed it (the violation surfaces only as a non-fatal warning), but Orval's Zod generator (added downstream in fewo-webapp's #469 increment 2) fails hard: must NOT have fewer than 1 items at /components/schemas/<DTO>/required must have required property '$ref' at /components/schemas/<DTO> must match exactly one schema in oneOf at /components/schemas/<DTO> 83 of fewo-webapp's 198 DTOs trip this. Stripping the empty array (absence of the keyword has the same semantics) is the spec-compliant fix. Bumps to v0.4.1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5ee6894916
commit
4c4d52e3de
2 changed files with 14 additions and 2 deletions
|
|
@ -43,5 +43,17 @@ for path, methods in paths.items():
|
|||
op.setdefault("operationId", op_id(method, path))
|
||||
op.setdefault("tags", [path.strip("/").split("/")[1] if "/" in path.strip("/") else "default"])
|
||||
|
||||
# oatpp 1.3 emits `"required": []` on schemas that have no required fields.
|
||||
# OpenAPI 3.0.x rejects this (`must NOT have fewer than 1 items`), which
|
||||
# breaks strict consumers like Orval's Zod generator. Strip empty arrays —
|
||||
# absence of the keyword has the same semantics.
|
||||
schemas = spec.get("components", {}).get("schemas", {})
|
||||
stripped = 0
|
||||
for sch in schemas.values():
|
||||
if isinstance(sch, dict) and sch.get("required") == []:
|
||||
del sch["required"]
|
||||
stripped += 1
|
||||
|
||||
SRC.write_text(json.dumps(spec, indent=2))
|
||||
print(f" postprocessed {SRC} — {len(paths)} paths")
|
||||
print(f" postprocessed {SRC} — {len(paths)} paths"
|
||||
+ (f", stripped empty `required` from {stripped} schemas" if stripped else ""))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@uschuster/webapp-scaffold",
|
||||
"version": "0.4.0",
|
||||
"version": "0.4.1",
|
||||
"description": "Shared build scripts + Vite config factories for webapp-template-derived projects.",
|
||||
"type": "module",
|
||||
"bin": {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue