An OpenAPI document is a promise about a service, and nothing keeps the two together. This checks whether the service still does what the document says, and whether a machine can still read the document at all.
An OpenAPI document is a promise about a service, and nothing keeps the two together. It quietly becomes a description of what the service used to do, and every consumer finds out one failed call at a time.
pip install openapi-drift openapi-drift openapi.json openapi-drift https://example.com/openapi.json --live
A response schema behind a $ref is correct, valid, and useless
to the tools that turn an operation into a function signature, because they do
not dereference. A validator sees a schema; a converter sees an argument with
no type. The document passes everything and cannot be used.
That is not hypothetical. It cost a week on a specification that passed every other check.
Not a fuzzer — it calls what you documented rather than generating traffic hunting for crashes. Not a syntax validator — a perfectly well-formed document can be unreadable by a machine.
--live calls parameterless GETs only. A path with a placeholder
or a required parameter is skipped rather than guessed at, because a guessed
value reports drift that is the checker's fault. Nothing is ever written.
openapi-drift openapi.json, or a URL.$ref is valid and useless to a consumer that does not dereference. This is a known problem with libraries built to solve it — openapi-schema-ref-parser is one. Those dereference it for you; this reports it, so the document gets fixed rather than every consumer working around it.| Install | pip install openapi-drift |
|---|---|
| License | MIT |
| Action | vince-gonzalez/openapi-drift |
| Source | vince-gonzalez/openapi-drift |
--live, and only with parameterless GETs. It never writes anything.