Definition of a breaking change #3793
-
|
Most API vendors follow something akin to Postel's law, but careful what you send and liberal in what you accept and as a result don't consider adding new attributes to a payload response a "breaking change". However, something like changing the data type they would. But, OAS also supports format. So you can have a integer type and a format of int32 and int64. Wondering if you change the type is this considered a breaking change? Can see any standard for this? Would welcome thoughts. |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 3 replies
-
|
I'm not aware of a standard that goes into that level of detail, but generally if something worked before and then doesn't work, that's a breaking change. So if a tool respects those This is a little more complex because tools are not required to recognize all Does that answer your question? Please let me know if I misinterpreted it! |
Beta Was this translation helpful? Give feedback.
-
|
@handrews thanks. The closest I found was from the openapi diff tool. https://github.com/Tufin/oasdiff/blob/main/BREAKING-CHANGES-EXAMPLES.md This is fairly extensive. It details lots of breaking changes, non breaking change and then "info - level" changes. Format changes are considered info-level. |
Beta Was this translation helpful? Give feedback.
-
|
I am reminded of an old xkcd: every change is breaking And, related, Hyrum's law |
Beta Was this translation helpful? Give feedback.
-
|
@dublintech It's not clear to me what the OAS can or should do here. Defining the meaning of "breaking change" for all APIs would be a dramatic extension of our scope into a different sort of standard. Currently, we describe APIs, but are as neutral as possible regarding how those APIs are designed. We intentionally want to be able to describe APIs that existed before someone tried to write an OpenAPI Description for them, and those APIs often grew in an ad-hoc manner. I am inclined to declare this out-of-scope for this project, but would like @OAI/tsc to weigh in. |
Beta Was this translation helpful? Give feedback.
-
|
Hi all, dropping in as the author of oasdiff (thanks @dublintech for the mention). A bit of perspective from 5 years of trying to answer "is this breaking?" for real-world API descriptions: Rough consensus and running code. In oasdiff I've consistently prioritized functionality and usability over formality. The catalog (currently ~470 check IDs, browsable with the Open source as a completeness lever. Going open and transparent has been the single biggest factor in catalog growth: people show up with edge cases I would never have found on my own. The format-direction asymmetry in this thread (int64 → int32 narrowing vs int32 → int64 widening) is exactly the kind of subtle, directional rule that only surfaces from contact with real specs. Even 5 years in, I'm still uncovering gaps. One motivated by this very discussion: adding an One pointer for the OP: OAS 3.1 is fully supported in oasdiff today, including an If anyone in this thread is interested in working together on the formal model, whether under the OAI umbrella or alongside it, I would welcome the collaboration; happy to seed it with the tree as a starting point. And, while I'm here: thanks to the oasdiff community of users, contributors, and reviewers who have reported missing cases, opened PRs, and pushed back on misclassifications over the years. Reuven |
Beta Was this translation helpful? Give feedback.

I definitely agree, Breaking change definition is something that is opiniated , and depends on what you are doing
you might distinguish especially for OAS ,at least 3 models : "on the wire breaking change" , sdk generation breaking change , and may be functionnal breaking change ,
notice that one of the pilar of OAS is JSON schema where you have as well no formal breaking change definition I found only this one !
" A braking change occurs when JSON instance that was valid under the old schema becomes invalid under the new schema. "
it could be a starting point but a bit even this simple definition is challenging , for instance is removing a non mandatory query parameter is a breaking chan…