OpenAPI 3.0 JSON → forge_ir::Ir.
Stage 3 supports a deliberately narrow subset of OpenAPI 3.0.x. See
docs/parser-coverage.md for the precise list. Anything outside the
subset produces an error-severity diagnostic with a JSON-pointer
location — never silent best-effort output.
Public surface
let json = std::fs::read_to_string("openapi.json").unwrap();
match forge_parser::parse_str(&json) {
Ok(out) => {
for d in &out.diagnostics { eprintln!("{}: {}", d.code, d.message); }
if let Some(ir) = out.spec { println!("{} operations", ir.operations.len()); }
}
Err(e) => eprintln!("fatal: {e}"),
}