BOUNDED OPENAPI COMPARISON
OpenAPI Diff
Compare two OpenAPI 3.0.x or 3.1.x specifications locally and classify changes as potentially breaking, non-breaking or unknown. Only JSON input, local references and a documented subset of constructs are supported.
COMPARE TWO SPECIFICATIONS
Baseline and candidate OpenAPI
Paste JSON OpenAPI documents up to 2 MB each. External URLs in $ref are rejected; use local component references. Only the documented subset below is inspected.
Both specs must declare "openapi": "3.0.x" or "3.1.x". Unsupported constructs are reported as unknown rather than assumed safe.
DIFF SUMMARY
Comparison results
Changes by path
Each row shows the operation or component path, change class, and a short explanation.
| Class | Path | Kind | Explanation |
|---|
Supported input contract
- OpenAPI versions 3.0.0–3.0.4 and 3.1.0–3.1.1 in JSON.
- Local
$refpointers inside the same document. Remote or absolute URL references, unresolved pointers, cyclic references and chains deeper than 16 hops are rejected with a readable error. - Paths, operations, parameters (query, header, path; path-level and operation-level merged, operation entries override duplicates), request bodies, responses and component schemas are inspected.
- Schema properties compared: type, nullable (3.0) / type array (3.1), enum, required list, properties, items, and local $ref targets.
- Unsupported schema keywords and constructs — including format, pattern, min/max length/range, min/max items, uniqueItems, multipleOf, additionalProperties schemas, composition (oneOf/anyOf/allOf/not/if), conditional schemas, discriminators, response headers, security schemes, callbacks, links, server settings and extensions — are reported as unknown rather than assumed safe.
Change classification
- Potentially breaking: removed operation/path, new required request parameter/property, narrower accepted request enum, wider possible response enum, removed or changed response property, changed type/nullability, removed response status or response content type, newly required request body, removed accepted request content type.
- Non-breaking: added operation/path, added optional request parameter/property, added response status or response content type, added optional response property, wider accepted request enum, narrower possible response enum, newly optional request body, added accepted request content type.
- Unknown / manual review: oneOf/anyOf/allOf/conditional schemas, remote or unresolved refs, unsupported schema keywords, additionalProperties schemas, response header changes, security schemes, callbacks, links, server settings, extensions, malformed path items, and any construct outside the supported subset.
This classification is conservative and generic. A change can be breaking or safe only relative to your actual clients and contract tests.
Limitations
- This tool compares documents you supply; it does not fetch specs from URLs, authenticate, or call the described API.
- Only the constructs listed above are semantically compared. Everything else is reported as unknown or rejected.
- Compatibility depends on consumer behaviour. Review every potentially breaking and unknown change against your client code and contract tests.
- Large specs are rejected above 2 MB; comparison stops at 1,000 reported changes and returns a truncated report with an explicit notice.