response-property-type-changed

Response property type changed.

directionresponseareaschemakindtypeactionchange

Breaking change (level: error)

It changes the type the response returns, so a client expecting the previous type can break.

What this check detects

The declared type of a response property changed so a client can no longer parse it the way it was written to. Responses are the mirror of requests: the risk is the server now returns a value the client cannot handle, for example a field that was an `integer` becoming a `string`, or a numeric field widening from `integer` to `number` (the client may now receive `1.5`).

Narrowing what the server returns is safe (every value was already valid before); widening it, or an incompatible swap, is breaking.

Example

Before
After
1responses:1responses:
2 '200':2 '200':
3 description: OK3 description: OK
4 content:4 content:
5 application/json:5 application/json:
6 schema:6 schema:
7 type: object7 type: object
8 properties:8 properties:
9 count:9 count:
10 type: integer10 type: string

A client that reads response.count as a number breaks when the server starts returning it as a string.

How to handle this change

When oasdiff flags response-property-type-changed, you have a few ways to respond:

  • Find a backward-compatible alternative. Redesign the change so clients that followed the old contract keep working, and agree on the approach with whoever introduced it.
  • Release it in a new API version. Keep the current contract and introduce the change in a new version, then deprecate the old one with a sunset date so clients have time to migrate.
  • Accept it as a deliberate breaking change. Sometimes a breaking change is unavoidable, such as an urgent or security fix. Approve it knowingly, document it in your release notes, and tell affected clients. This should be the exception, not a routine way of working.

If oasdiff's verdict does not match your API's compatibility policy, you can also change how it treats response-property-type-changed with a severity-levels file:

Put one rule per line; the level can be err, warn, or info, or none to disable the check entirely:

# severity.txt
response-property-type-changed warn

Then pass it to oasdiff:

oasdiff changelog base.yaml revision.yaml --severity-levels severity.txt

Related schema rules

Browse all 509 checks →