def to_json_schema_7(schema: JsonSchema) -> JsonSchema7: result = schema.copy() isolate_ref(result) if "$defs" in result: result["definitions"] = { **result.pop("$defs"), **result.get("definitions", {}) } if "dependentRequired" in result: result["dependencies"] = { **result.pop("dependentRequired"), **result.get("dependencies", {}), } return JsonSchema7(result)
def to_open_api_3_0(schema: JsonSchema) -> OpenAPI30: result = schema.copy() for key in ("dependentRequired", "unevaluatedProperties", "$defs"): result.pop(key, ...) isolate_ref(result) if "null" in result.get("type", ()): result.setdefault("nullable", True) if result["type"] == "null": result.pop("type") else: types = [t for t in result["type"] if t != "null"] result["type"] = types if len(types) > 1 else types[0] if {"type": "null"} in result.get("anyOf", ()): result.setdefault("nullable", True) result["anyOf"] = [a for a in result["anyOf"] if a != {"type": "null"}] if "examples" in result: result.setdefault("example", result.pop("examples")[0]) return OpenAPI30(result)