OpenAPI Breaking Changes: The Complete List of Rules

oasdiff detects 474 distinct API changes across 9 OpenAPI areas, breaking and non-breaking, in OpenAPI 3.x specifications. Each change is classified by the OpenAPI object it affects and the kind of change it represents, generated directly from the oasdiff CLI.

A "breaking change" is any modification that could cause existing API clients to fail without code changes. Run these checks automatically in CI with the GitHub Action or the CLI.

Core Structure

Paths & Operations

20 changes

Existence9

TypeIDDescription
Infoapi-operation-id-addedoperation ID added to an endpoint
Infoapi-operation-id-removedoperation ID deleted from an endpoint
Breakingapi-path-removed-before-sunsetpath and endpoint deleted before sunset date
Infoapi-path-removed-with-deprecationpath and endpoint deleted after deprecation
Breakingapi-path-removed-without-deprecationpath and endpoint deleted without deprecation
Breakingapi-removed-before-sunsetendpoint deleted before sunset date
Infoapi-removed-with-deprecationendpoint deleted after deprecation
Breakingapi-removed-without-deprecationendpoint deleted without deprecation
Infoendpoint-addedendpoint added

Lifecycle11

TypeIDDescription
Breakingapi-deprecated-sunset-missingendpoint deprecated without sunset date
Breakingapi-deprecated-sunset-parseendpoint deprecated with invalid sunset date
Breakingapi-invalid-stability-levelinvalid stability level
Breakingapi-path-sunset-parsepath and endpoint deleted with invalid or missing sunset date
Breakingapi-stability-decreasedendpoint stability level decreased
Breakingapi-sunset-date-changed-too-smallmodified sunset date doesn't meet min required deprecation days
Breakingapi-sunset-date-too-smalldeprecated endpoint sunset before min required deprecation days
Infoendpoint-deprecatedendpoint deprecated
Infoendpoint-deprecated-with-sunsetendpoint deprecated with sunset date
Infoendpoint-reactivatedendpoint reactivated (deprecation set to false)
Breakingsunset-deletedsunset deleted

Components

3 changes

Existence3

TypeIDDescription
Infoapi-schema-removedschema deleted from components/schemas
Infowebhook-addedwebhook added
Breakingwebhook-removedwebhook removed

Data & Operations

Schema

347 changes

Existence21

TypeIDDescription
Infonew-optional-request-propertyoptional property added to request
Breakingnew-required-request-propertyrequired property added to request
Infonew-required-request-property-with-defaultrequired property with default value added to request
Breakingrequest-body-content-schema-addedcontentSchema added to request body
Inforequest-body-content-schema-removedcontentSchema removed from request body
Breakingrequest-body-removedrequest body removed
Breakingrequest-property-content-schema-addedcontentSchema added to request property
Inforequest-property-content-schema-removedcontentSchema removed from request property
Warningrequest-property-removedrequest property removed
Inforesponse-body-content-schema-addedcontentSchema added to response body
Breakingresponse-body-content-schema-removedcontentSchema removed from response body
Inforesponse-optional-property-addedresponse optional property added
Warningresponse-optional-property-removedresponse optional property removed
Inforesponse-optional-write-only-property-addedresponse optional write-only property added
Inforesponse-optional-write-only-property-removedresponse optional write-only property removed
Inforesponse-property-content-schema-addedcontentSchema added to response property
Breakingresponse-property-content-schema-removedcontentSchema removed from response property
Inforesponse-required-property-addedresponse required property added
Breakingresponse-required-property-removedresponse required property removed
Inforesponse-required-write-only-property-addedresponse required write-only property added
Inforesponse-required-write-only-property-removedresponse required write-only property removed

Requiredness13

TypeIDDescription
Breakingrequest-body-became-not-nullablenull excluded as a possible value in request body
Inforequest-body-became-nullablenull added as a possible value in request body
Breakingrequest-property-became-not-nullablerequest property became not nullable
Inforequest-property-became-nullablerequest property became nullable
Inforequest-property-became-optionalrequest property became optional
Breakingrequest-property-became-requiredrequest property became required
Inforequest-property-became-required-with-defaultrequest property with a default value became required
Breakingresponse-body-became-nullableresponse body became nullable
Breakingresponse-property-became-nullableresponse property became nullable
Breakingresponse-property-became-optionalresponse property became optional
Inforesponse-property-became-requiredresponse property became required
Inforesponse-write-only-property-became-optionalresponse write-only property became optional
Inforesponse-write-only-property-became-requiredresponse write-only property became required

Mutability (read-only / write-only)16

TypeIDDescription
Inforequest-optional-property-became-not-read-onlyrequest optional property became not read-only
Inforequest-optional-property-became-not-write-onlyrequest optional property became not write-only
Inforequest-optional-property-became-read-onlyrequest optional property became read-only
Inforequest-optional-property-became-write-onlyrequest optional property became write-only
Inforequest-required-property-became-not-read-onlyrequest required property became not read-only
Inforequest-required-property-became-not-write-onlyrequest required property became not write-only
Inforequest-required-property-became-read-onlyrequest required property became read-only
Inforequest-required-property-became-write-onlyrequest required property became write-only
Inforesponse-optional-property-became-not-read-onlyresponse optional property became not read-only
Inforesponse-optional-property-became-not-write-onlyresponse optional property became not write-only
Inforesponse-optional-property-became-read-onlyresponse optional property became read-only
Inforesponse-optional-property-became-write-onlyresponse optional property became write-only
Inforesponse-required-property-became-not-read-onlyresponse required property became not read-only
Warningresponse-required-property-became-not-write-onlyresponse required property became not write-onlyMitigation: This is valid only if the property was always returned before the specification changed.
Inforesponse-required-property-became-read-onlyresponse required property became read-only
Inforesponse-required-property-became-write-onlyresponse required property became write-only

Type & format18

TypeIDDescription
Breakingrequest-body-list-of-types-narrowedrequest body list-of-types narrowed
Inforequest-body-list-of-types-widenedrequest body list-of-types widened
Breakingrequest-body-type-changedrequest body type changed
Inforequest-body-type-generalizedrequest body type generalized
Breakingrequest-property-content-encoding-changedrequest property contentEncoding changed
Breakingrequest-property-content-media-type-changedrequest property contentMediaType changed
Breakingrequest-property-list-of-types-narrowedrequest property list-of-types narrowed
Inforequest-property-list-of-types-widenedrequest property list-of-types widened
Breakingrequest-property-type-changedrequest property type changed
Inforequest-property-type-generalizedrequest property type generalized
Inforesponse-body-list-of-types-narrowedresponse body list-of-types narrowed
Breakingresponse-body-list-of-types-widenedresponse body list-of-types widened
Breakingresponse-body-type-changedresponse body type changed
Breakingresponse-property-content-encoding-changedresponse property contentEncoding changed
Breakingresponse-property-content-media-type-changedresponse property contentMediaType changed
Inforesponse-property-list-of-types-narrowedresponse property list-of-types narrowed
Breakingresponse-property-list-of-types-widenedresponse property list-of-types widened
Breakingresponse-property-type-changedresponse property type changed

Constraints92

TypeIDDescription
Breakingrequest-body-exclusive-max-decreasedrequest body exclusiveMaximum decreased
Inforequest-body-exclusive-max-increasedrequest body exclusiveMaximum increased
Warningrequest-body-exclusive-max-setrequest body exclusiveMaximum setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-body-exclusive-min-decreasedrequest body exclusiveMinimum decreased
Breakingrequest-body-exclusive-min-increasedrequest body exclusiveMinimum increased
Warningrequest-body-exclusive-min-setrequest body exclusiveMinimum setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Breakingrequest-body-max-contains-decreasedrequest body maxContains decreased
Inforequest-body-max-contains-increasedrequest body maxContains increased
Breakingrequest-body-max-decreasedrequest body max decreased
Inforequest-body-max-increasedrequest body max increased
Breakingrequest-body-max-length-decreasedrequest body max length decreased
Inforequest-body-max-length-increasedrequest body max length increased
Warningrequest-body-max-length-setrequest body max length setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Warningrequest-body-max-setrequest body max setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-body-min-contains-decreasedrequest body minContains decreased
Breakingrequest-body-min-contains-increasedrequest body minContains increased
Inforequest-body-min-decreasedrequest body min decreased
Breakingrequest-body-min-increasedrequest body min increased
Breakingrequest-body-min-items-increasedrequest body min items increased
Warningrequest-body-min-items-setrequest body min items setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-body-min-length-decreasedrequest body min length decreased
Breakingrequest-body-min-length-increasedrequest body min length increased
Warningrequest-body-min-setrequest body min setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Breakingrequest-body-pattern-property-addedpattern property added to request body
Inforequest-body-pattern-property-removedpattern property removed from request body
Breakingrequest-property-exclusive-max-decreasedrequest property exclusiveMaximum decreased
Inforequest-property-exclusive-max-increasedrequest property exclusiveMaximum increased
Warningrequest-property-exclusive-max-setrequest property exclusiveMaximum setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-property-exclusive-min-decreasedrequest property exclusiveMinimum decreased
Breakingrequest-property-exclusive-min-increasedrequest property exclusiveMinimum increased
Warningrequest-property-exclusive-min-setrequest property exclusiveMinimum setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Breakingrequest-property-max-contains-decreasedrequest property maxContains decreased
Inforequest-property-max-contains-increasedrequest property maxContains increased
Breakingrequest-property-max-decreasedrequest property max decreased
Inforequest-property-max-increasedrequest property max increased
Breakingrequest-property-max-length-decreasedrequest property max length decreased
Inforequest-property-max-length-increasedrequest property max length increased
Warningrequest-property-max-length-setrequest property max length setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Warningrequest-property-max-setrequest property max setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-property-min-contains-decreasedrequest property minContains decreased
Breakingrequest-property-min-contains-increasedrequest property minContains increased
Inforequest-property-min-decreasedrequest property min decreased
Breakingrequest-property-min-increasedrequest property min increased
Breakingrequest-property-min-items-increasedrequest property min items increased
Warningrequest-property-min-items-setrequest property min items setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-property-min-length-decreasedrequest property min length decreased
Breakingrequest-property-min-length-increasedrequest property min length increased
Warningrequest-property-min-setrequest property min setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Breakingrequest-property-pattern-addedrequest property pattern set
Warningrequest-property-pattern-changedrequest property pattern changed
Inforequest-property-pattern-generalizedrequest property pattern generalized
Breakingrequest-property-pattern-property-addedpattern property added to request property
Inforequest-property-pattern-property-removedpattern property removed from request property
Inforequest-property-pattern-removedrequest property pattern unset
Inforequest-read-only-property-exclusive-max-decreasedrequest read-only property exclusiveMaximum decreased
Inforequest-read-only-property-exclusive-min-increasedrequest read-only property exclusiveMinimum increased
Inforequest-read-only-property-max-decreasedrequest read-only property max decreased
Inforequest-read-only-property-max-length-decreasedrequest read-only property max length decreased
Inforequest-read-only-property-min-increasedrequest read-only property min increased
Breakingresponse-body-exclusive-max-increasedresponse body exclusiveMaximum increased
Breakingresponse-body-exclusive-min-decreasedresponse body exclusiveMinimum decreased
Inforesponse-body-max-contains-decreasedresponse body maxContains decreased
Breakingresponse-body-max-contains-increasedresponse body maxContains increased
Breakingresponse-body-max-increasedresponse body max increased
Breakingresponse-body-max-length-increasedresponse body max length increased
Breakingresponse-body-max-length-unsetresponse body max length unset
Breakingresponse-body-min-contains-decreasedresponse body minContains decreased
Inforesponse-body-min-contains-increasedresponse body minContains increased
Breakingresponse-body-min-decreasedresponse body min decreased
Breakingresponse-body-min-items-decreasedresponse body min items decreased
Breakingresponse-body-min-items-unsetresponse body min items unset
Breakingresponse-body-min-length-decreasedresponse body min length decreased
Inforesponse-body-pattern-property-addedpattern property added to response body
Breakingresponse-body-pattern-property-removedpattern property removed from response body
Breakingresponse-property-exclusive-max-increasedresponse property exclusiveMaximum increased
Breakingresponse-property-exclusive-min-decreasedresponse property exclusiveMinimum decreased
Inforesponse-property-max-contains-decreasedresponse property maxContains decreased
Breakingresponse-property-max-contains-increasedresponse property maxContains increased
Breakingresponse-property-max-increasedresponse property max increased
Breakingresponse-property-max-length-increasedresponse property max length increased
Breakingresponse-property-max-length-unsetresponse property max length unset
Breakingresponse-property-min-contains-decreasedresponse property minContains decreased
Inforesponse-property-min-contains-increasedresponse property minContains increased
Breakingresponse-property-min-decreasedresponse property min decreased
Breakingresponse-property-min-items-decreasedresponse property min items decreased
Breakingresponse-property-min-items-unsetresponse property min items unset
Breakingresponse-property-min-length-decreasedresponse property min length decreased
Inforesponse-property-pattern-addedresponse property pattern set
Inforesponse-property-pattern-changedresponse property pattern changed
Inforesponse-property-pattern-property-addedpattern property added to response property
Breakingresponse-property-pattern-property-removedpattern property removed from response property
Inforesponse-property-pattern-removedresponse property pattern unset

Values35

TypeIDDescription
Breakingrequest-body-became-enumrequest body restricted to enum
Breakingrequest-body-const-addedrequest body const value set
Breakingrequest-body-const-changedrequest body const value modified
Inforequest-body-const-removedrequest body const value unset
Inforequest-body-default-value-addedrequest body default value set
Inforequest-body-default-value-changedrequest body default value modified
Inforequest-body-default-value-removedrequest body default value unset
Inforequest-body-enum-value-removedrequest body enum value deleted
Breakingrequest-property-became-enumrequest property restricted to enum
Breakingrequest-property-const-addedrequest property const value set
Breakingrequest-property-const-changedrequest property const value modified
Inforequest-property-const-removedrequest property const value unset
Inforequest-property-default-value-addedrequest property default value set
Inforequest-property-default-value-changedrequest property default value changed
Inforequest-property-default-value-removedrequest property default value unset
Inforequest-property-enum-value-addedrequest property enum value added
Breakingrequest-property-enum-value-removedrequest property enum value removed
Breakingrequest-property-x-extensible-enum-value-removedrequest property x-extensible-enum value removed
Inforequest-read-only-property-enum-value-removedrequest read-only property enum value removed
Inforesponse-body-const-addedresponse body const value set
Breakingresponse-body-const-changedresponse body const value modified
Breakingresponse-body-const-removedresponse body const value unset
Inforesponse-body-default-value-addedresponse body default value set
Inforesponse-body-default-value-changedresponse body default value changed
Inforesponse-body-default-value-removedresponse body default value unset
Inforesponse-mediatype-enum-value-removedresponse mediatype enum value removed
Inforesponse-property-const-addedresponse property const value set
Breakingresponse-property-const-changedresponse property const value modified
Breakingresponse-property-const-removedresponse property const value unset
Inforesponse-property-default-value-addedresponse property default value set
Inforesponse-property-default-value-changedresponse property default value changed
Inforesponse-property-default-value-removedresponse property default value unset
Warningresponse-property-enum-value-addedresponse property enum value addedMitigation: Adding new enum values to a response can be unexpected for clients; use x-extensible-enum instead.
Inforesponse-property-enum-value-removedresponse property enum value removed
Inforesponse-write-only-property-enum-value-addedresponse write-only property enum value added

Structure & composition140

TypeIDDescription
Breakingrequest-body-all-of-addedsub-schema added to allOf in request body
Inforequest-body-all-of-added-annotation-onlyannotation-only sub-schema added to allOf in request body (no wire-contract effect)
Warningrequest-body-all-of-removedsub-schema deleted from allOf in request body
Inforequest-body-all-of-removed-annotation-onlyannotation-only sub-schema removed from allOf in request body (no wire-contract effect)
Inforequest-body-any-of-addedsub-schema added to anyOf in request body
Breakingrequest-body-any-of-removedsub-schema deleted from anyOf in request body
Breakingrequest-body-contains-addedcontains constraint added to request body
Inforequest-body-contains-removedcontains constraint removed from request body
Breakingrequest-body-dependent-required-addedrequest body dependentRequired added
Breakingrequest-body-dependent-required-changedrequest body dependentRequired changed
Inforequest-body-dependent-required-removedrequest body dependentRequired removed
Breakingrequest-body-dependent-schema-addeddependent schema added to request body
Inforequest-body-dependent-schema-removeddependent schema removed from request body
Inforequest-body-discriminator-addedrequest body discriminator added
Inforequest-body-discriminator-mapping-addedrequest body discriminator mapping added
Inforequest-body-discriminator-mapping-changedrequest body discriminator mapping changed
Inforequest-body-discriminator-mapping-deletedrequest body discriminator mapping deleted
Inforequest-body-discriminator-property-name-changedrequest body discriminator property name changed
Inforequest-body-discriminator-removedrequest body discriminator deleted
Breakingrequest-body-else-addedelse subschema added to request body
Inforequest-body-else-removedelse subschema removed from request body
Breakingrequest-body-if-addedif subschema added to request body
Inforequest-body-if-removedif subschema removed from request body
Inforequest-body-one-of-addedsub-schema added to oneOf in request body
Breakingrequest-body-one-of-removedsub-schema deleted from oneOf in request body
Inforequest-body-prefix-items-addedsub-schema added to prefixItems in request body
Breakingrequest-body-prefix-items-removedsub-schema removed from prefixItems in request body
Breakingrequest-body-property-names-addedpropertyNames constraint added to request body
Inforequest-body-property-names-removedpropertyNames constraint removed from request body
Breakingrequest-body-then-addedthen subschema added to request body
Inforequest-body-then-removedthen subschema removed from request body
Breakingrequest-body-unevaluated-items-addedunevaluatedItems constraint added to request body
Inforequest-body-unevaluated-items-removedunevaluatedItems constraint removed from request body
Breakingrequest-body-unevaluated-properties-addedunevaluatedProperties constraint added to request body
Inforequest-body-unevaluated-properties-removedunevaluatedProperties constraint removed from request body
Breakingrequest-property-all-of-addedsub-schema added to allOf in request property
Inforequest-property-all-of-added-annotation-onlyannotation-only sub-schema added to allOf in request property (no wire-contract effect)
Warningrequest-property-all-of-removedsub-schema deleted from allOf in request property
Inforequest-property-all-of-removed-annotation-onlyannotation-only sub-schema removed from allOf in request property (no wire-contract effect)
Inforequest-property-any-of-addedsub-schema added to anyOf in request property
Breakingrequest-property-any-of-removedsub-schema deleted from anyOf in request property
Breakingrequest-property-contains-addedcontains constraint added to request property
Inforequest-property-contains-removedcontains constraint removed from request property
Breakingrequest-property-dependent-required-addedrequest property dependentRequired added
Breakingrequest-property-dependent-required-changedrequest property dependentRequired changed
Inforequest-property-dependent-required-removedrequest property dependentRequired removed
Breakingrequest-property-dependent-schema-addeddependent schema added to request property
Inforequest-property-dependent-schema-removeddependent schema removed from request property
Inforequest-property-discriminator-addedrequest property discriminator added
Inforequest-property-discriminator-mapping-addedrequest property discriminator mapping added
Inforequest-property-discriminator-mapping-changedrequest property discriminator mapping changed
Inforequest-property-discriminator-mapping-deletedrequest property discriminator mapping deleted
Inforequest-property-discriminator-property-name-changedrequest property discriminator property name changed
Inforequest-property-discriminator-removedrequest property discriminator removed
Breakingrequest-property-else-addedelse subschema added to request property
Inforequest-property-else-removedelse subschema removed from request property
Breakingrequest-property-if-addedif subschema added to request property
Inforequest-property-if-removedif subschema removed from request property
Inforequest-property-one-of-addedsub-schema added to oneOf in request property
Breakingrequest-property-one-of-removedsub-schema deleted from oneOf in request property
Inforequest-property-prefix-items-addedsub-schema added to prefixItems in request property
Breakingrequest-property-prefix-items-removedsub-schema removed from prefixItems in request property
Breakingrequest-property-property-names-addedpropertyNames constraint added to request property
Inforequest-property-property-names-removedpropertyNames constraint removed from request property
Breakingrequest-property-then-addedthen subschema added to request property
Inforequest-property-then-removedthen subschema removed from request property
Breakingrequest-property-unevaluated-items-addedunevaluatedItems constraint added to request property
Inforequest-property-unevaluated-items-removedunevaluatedItems constraint removed from request property
Breakingrequest-property-unevaluated-properties-addedunevaluatedProperties constraint added to request property
Inforequest-property-unevaluated-properties-removedunevaluatedProperties constraint removed from request property
Inforesponse-body-all-of-addedsub-schema added to allOf in response body
Inforesponse-body-all-of-added-annotation-onlyannotation-only sub-schema added to allOf in response body (no wire-contract effect)
Inforesponse-body-all-of-removedsub-schema removed from allOf in response body
Inforesponse-body-all-of-removed-annotation-onlyannotation-only sub-schema removed from allOf in response body (no wire-contract effect)
Inforesponse-body-any-of-addedsub-schema added to anyOf in response body
Inforesponse-body-any-of-removedsub-schema removed from anyOf in response body
Inforesponse-body-contains-addedcontains constraint added to response body
Breakingresponse-body-contains-removedcontains constraint removed from response body
Inforesponse-body-dependent-required-addedresponse body dependentRequired added
Breakingresponse-body-dependent-required-changedresponse body dependentRequired changed
Breakingresponse-body-dependent-required-removedresponse body dependentRequired removed
Inforesponse-body-dependent-schema-addeddependent schema added to response body
Breakingresponse-body-dependent-schema-removeddependent schema removed from response body
Inforesponse-body-discriminator-addedresponse body discriminator added
Inforesponse-body-discriminator-mapping-addedresponse body discriminator mapping added
Inforesponse-body-discriminator-mapping-changedresponse body discriminator mapping changed
Inforesponse-body-discriminator-mapping-deletedresponse body discriminator mapping deleted
Inforesponse-body-discriminator-property-name-changedresponse body discriminator property name changed
Inforesponse-body-discriminator-removedresponse body discriminator removed
Inforesponse-body-else-addedelse subschema added to response body
Breakingresponse-body-else-removedelse subschema removed from response body
Inforesponse-body-if-addedif subschema added to response body
Breakingresponse-body-if-removedif subschema removed from response body
Breakingresponse-body-one-of-addedsub-schema added to oneOf in response body
Inforesponse-body-one-of-removedsub-schema removed from oneOf in response body
Breakingresponse-body-prefix-items-addedsub-schema added to prefixItems in response body
Inforesponse-body-prefix-items-removedsub-schema removed from prefixItems in response body
Inforesponse-body-property-names-addedpropertyNames constraint added to response body
Breakingresponse-body-property-names-removedpropertyNames constraint removed from response body
Inforesponse-body-then-addedthen subschema added to response body
Breakingresponse-body-then-removedthen subschema removed from response body
Inforesponse-body-unevaluated-items-addedunevaluatedItems constraint added to response body
Breakingresponse-body-unevaluated-items-removedunevaluatedItems constraint removed from response body
Inforesponse-body-unevaluated-properties-addedunevaluatedProperties constraint added to response body
Breakingresponse-body-unevaluated-properties-removedunevaluatedProperties constraint removed from response body
Inforesponse-property-all-of-addedsub-schema added to allOf in response property
Inforesponse-property-all-of-added-annotation-onlyannotation-only sub-schema added to allOf in response property (no wire-contract effect)
Inforesponse-property-all-of-removedsub-schema removed from allOf in response property
Inforesponse-property-all-of-removed-annotation-onlyannotation-only sub-schema removed from allOf in response property (no wire-contract effect)
Inforesponse-property-any-of-addedsub-schema added to anyOf in response property
Inforesponse-property-any-of-removedsub-schema removed from anyOf in response property
Inforesponse-property-contains-addedcontains constraint added to response property
Breakingresponse-property-contains-removedcontains constraint removed from response property
Inforesponse-property-dependent-required-addedresponse property dependentRequired added
Breakingresponse-property-dependent-required-changedresponse property dependentRequired changed
Breakingresponse-property-dependent-required-removedresponse property dependentRequired removed
Inforesponse-property-dependent-schema-addeddependent schema added to response property
Breakingresponse-property-dependent-schema-removeddependent schema removed from response property
Inforesponse-property-discriminator-addedresponse property discriminator added
Inforesponse-property-discriminator-mapping-addedresponse property discriminator mapping added
Inforesponse-property-discriminator-mapping-changedresponse property discriminator mapping changed
Inforesponse-property-discriminator-mapping-deletedresponse property discriminator mapping deleted
Inforesponse-property-discriminator-property-name-changedresponse property discriminator property name changed
Inforesponse-property-discriminator-removedresponse property discriminator removed
Inforesponse-property-else-addedelse subschema added to response property
Breakingresponse-property-else-removedelse subschema removed from response property
Inforesponse-property-if-addedif subschema added to response property
Breakingresponse-property-if-removedif subschema removed from response property
Breakingresponse-property-one-of-addedsub-schema added to oneOf in response property
Inforesponse-property-one-of-removedsub-schema removed from oneOf in response property
Breakingresponse-property-prefix-items-addedsub-schema added to prefixItems in response property
Inforesponse-property-prefix-items-removedsub-schema removed from prefixItems in response property
Inforesponse-property-property-names-addedpropertyNames constraint added to response property
Breakingresponse-property-property-names-removedpropertyNames constraint removed from response property
Inforesponse-property-then-addedthen subschema added to response property
Breakingresponse-property-then-removedthen subschema removed from response property
Inforesponse-property-unevaluated-items-addedunevaluatedItems constraint added to response property
Breakingresponse-property-unevaluated-items-removedunevaluatedItems constraint removed from response property
Inforesponse-property-unevaluated-properties-addedunevaluatedProperties constraint added to response property
Breakingresponse-property-unevaluated-properties-removedunevaluatedProperties constraint removed from response property

Lifecycle12

TypeIDDescription
Inforequest-property-deprecatedrequest property deprecated
Breakingrequest-property-deprecated-sunset-invalidrequest property deprecated with invalid sunset date
Breakingrequest-property-deprecated-sunset-missingrequest property deprecated without sunset date
Inforequest-property-deprecated-with-sunsetrequest property deprecated with sunset date
Inforequest-property-reactivatedrequest property reactivated (deprecation set to false)
Breakingrequest-property-sunset-date-too-smalldeprecated request property sunset before min required deprecation days
Inforesponse-property-deprecatedresponse property deprecated
Breakingresponse-property-deprecated-sunset-invalidresponse property deprecated with invalid sunset date
Breakingresponse-property-deprecated-sunset-missingresponse property deprecated without sunset date
Inforesponse-property-deprecated-with-sunsetresponse property deprecated with sunset date
Inforesponse-property-reactivatedresponse property reactivated (deprecation set to false)
Breakingresponse-property-sunset-date-too-smalldeprecated response property sunset before min required deprecation days

Parameters

64 changes

Existence9

TypeIDDescription
Infonew-optional-request-default-parameter-to-existing-pathoptional request parameter added at path level
Infonew-optional-request-parameteroptional request parameter added to endpoint
Breakingnew-request-path-parameternew request path parameter
Breakingnew-required-request-default-parameter-to-existing-pathrequired request parameter added at path level
Breakingnew-required-request-header-propertynew required request header
Breakingnew-required-request-parameterrequired request parameter added to endpoint
Warningrequest-parameter-removedrequest parameter deletedMitigation: This is a warning because some clients may return an error when receiving an unexpected parameter. It is recommended to deprecate the parameter first.
Breakingrequest-parameter-removed-before-sunsetrequest parameter deleted before sunset date
Inforequest-parameter-removed-with-deprecationrequest parameter deleted after deprecation

Requiredness3

TypeIDDescription
Breakingrequest-header-property-became-requiredrequest header property became required
Inforequest-parameter-became-optionalrequest parameter became optional
Breakingrequest-parameter-became-requiredrequest parameter became required

Type & format9

TypeIDDescription
Breakingrequest-parameter-list-of-types-narrowedrequest parameter list-of-types narrowed
Inforequest-parameter-list-of-types-widenedrequest parameter list-of-types widened
Breakingrequest-parameter-property-list-of-types-narrowedrequest parameter property list-of-types narrowed
Inforequest-parameter-property-list-of-types-widenedrequest parameter property list-of-types widened
Warningrequest-parameter-property-type-changedrequest parameter property type changed
Inforequest-parameter-property-type-generalizedrequest parameter property type generalized
Breakingrequest-parameter-property-type-specializedrequest parameter property type specialized
Breakingrequest-parameter-type-changedrequest parameter type changed
Inforequest-parameter-type-generalizedrequest parameter type generalized

Constraints26

TypeIDDescription
Breakingrequest-parameter-exclusive-max-decreasedrequest parameter exclusiveMaximum decreased
Inforequest-parameter-exclusive-max-increasedrequest parameter exclusiveMaximum increased
Warningrequest-parameter-exclusive-max-setrequest parameter exclusiveMaximum setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-parameter-exclusive-min-decreasedrequest parameter exclusiveMinimum decreased
Breakingrequest-parameter-exclusive-min-increasedrequest parameter exclusiveMinimum increased
Warningrequest-parameter-exclusive-min-setrequest parameter exclusiveMinimum setMitigation: This is a warning because the restriction is sometimes legitimately required. Before making such a change, confirm that clients can handle the new restriction.
Breakingrequest-parameter-max-decreasedrequest parameter max decreased
Inforequest-parameter-max-increasedrequest parameter max increased
Breakingrequest-parameter-max-items-decreasedrequest parameter max items decreased
Inforequest-parameter-max-items-increasedrequest parameter max items increased
Breakingrequest-parameter-max-length-decreasedrequest parameter max length decreased
Inforequest-parameter-max-length-increasedrequest parameter max length increased
Warningrequest-parameter-max-length-setrequest parameter max length setMitigation: This is a warning because the restriction is sometimes legitimately required, for security reasons or to correct an error in the specification. Before making such a change, confirm that clients can handle the new restriction.
Warningrequest-parameter-max-setrequest parameter max setMitigation: This is a warning because the restriction is sometimes legitimately required, for security reasons or to correct an error in the specification. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-parameter-min-decreasedrequest parameter min decreased
Breakingrequest-parameter-min-increasedrequest parameter min increased
Inforequest-parameter-min-items-decreasedrequest parameter min items decreased
Breakingrequest-parameter-min-items-increasedrequest parameter min items increased
Warningrequest-parameter-min-items-setrequest parameter min items setMitigation: This is a warning because the restriction is sometimes legitimately required, for security reasons or to correct an error in the specification. Before making such a change, confirm that clients can handle the new restriction.
Inforequest-parameter-min-length-decreasedrequest parameter min length decreased
Breakingrequest-parameter-min-length-increasedrequest parameter min length increased
Warningrequest-parameter-min-setrequest parameter min setMitigation: This is a warning because the restriction is sometimes legitimately required, for security reasons or to correct an error in the specification. Before making such a change, confirm that clients can handle the new restriction.
Breakingrequest-parameter-pattern-addedrequest parameter pattern set
Warningrequest-parameter-pattern-changedrequest parameter pattern changed
Inforequest-parameter-pattern-generalizedrequest parameter pattern generalized
Inforequest-parameter-pattern-removedrequest parameter pattern unset

Values10

TypeIDDescription
Breakingrequest-header-property-became-enumrequest header property restricted to enum
Breakingrequest-parameter-became-enumrequest parameter restricted to enum
Breakingrequest-parameter-default-value-addedrequest parameter default value set
Breakingrequest-parameter-default-value-changedrequest parameter default value changed
Breakingrequest-parameter-default-value-removedrequest parameter default value unset
Inforequest-parameter-enum-value-addedrequest parameter enum value added
Breakingrequest-parameter-enum-value-removedrequest parameter enum value deleted
Inforequest-parameter-property-enum-value-addedrequest parameter property enum value added
Breakingrequest-parameter-property-enum-value-removedrequest parameter property enum value removed
Breakingrequest-parameter-x-extensible-enum-value-removedrequest parameter x-extensible-enum value deleted

Lifecycle7

TypeIDDescription
Inforequest-parameter-deprecatedrequest parameter deprecated
Breakingrequest-parameter-deprecated-sunset-missingrequest parameter deprecated without sunset date
Inforequest-parameter-reactivatedrequest parameter reactivated (deprecation set to false)
Breakingrequest-parameter-sunset-date-changed-too-smallrequest parameter sunset date moved below min required deprecation days
Breakingrequest-parameter-sunset-date-too-smalldeprecated request parameter sunset before min required deprecation days
Breakingrequest-parameter-sunset-deletedrequest parameter sunset date deleted while still deprecated
Breakingrequest-parameter-sunset-parserequest parameter deprecated with invalid sunset date

Request Body

8 changes

Existence4

TypeIDDescription
Inforequest-body-added-optionaloptional request body added
Breakingrequest-body-added-requiredrequired request body added
Inforequest-body-media-type-addedrequest body media-type added
Breakingrequest-body-media-type-removedrequest body media-type deleted

Requiredness2

TypeIDDescription
Inforequest-body-became-optionalrequest body became optional
Breakingrequest-body-became-requiredrequest body became required

Type & format2

TypeIDDescription
Breakingrequest-body-content-encoding-changedrequest body contentEncoding changed
Breakingrequest-body-content-media-type-changedrequest body contentMediaType changed

Responses

11 changes

Existence6

TypeIDDescription
Inforesponse-media-type-addedresponse media type added
Breakingresponse-media-type-removedresponse media type removed
Inforesponse-non-success-status-addedresponse non-success status added
Inforesponse-non-success-status-removedresponse non-success status removed
Inforesponse-success-status-addedresponse success status added
Breakingresponse-success-status-removedresponse success status removed

Type & format5

TypeIDDescription
Breakingresponse-body-content-encoding-changedresponse body contentEncoding changed
Breakingresponse-body-content-media-type-changedresponse body contentMediaType changed
Inforesponse-media-type-name-changedresponse media type changed
Breakingresponse-media-type-name-generalizedresponse media type changed to a more general type
Inforesponse-media-type-name-specializedresponse media type changed to a more specific type

Headers

3 changes

Existence2

TypeIDDescription
Warningoptional-response-header-removedoptional response header deleted
Breakingrequired-response-header-removedrequired response header removed

Requiredness1

TypeIDDescription
Breakingresponse-header-became-optionalresponse header became optional

Security & Connectivity

Security

16 changes

Existence12

TypeIDDescription
Infoapi-global-security-addedsecurity scheme added in security
Infoapi-global-security-removedsecurity scheme deleted in security
Infoapi-global-security-scope-addedscope added to a security scheme in security
Infoapi-global-security-scope-removedscope deleted from a security scheme in security
Infoapi-security-addedsecurity requirements added to endpoint
Infoapi-security-component-addedsecurity scheme added in components/securitySchemes
Infoapi-security-component-oauth-scope-addedscope added to OAuth flow in components/securitySchemes
Infoapi-security-component-oauth-scope-removedscope deleted from OAuth flow in components/securitySchemes
Infoapi-security-component-removedsecurity scheme deleted in components/securitySchemes
Infoapi-security-removedsecurity requirements deleted from endpoint
Infoapi-security-scope-addedscope added to an endpoint's security scheme
Infoapi-security-scope-removedscope deleted from an endpoint's security scheme

Type & format4

TypeIDDescription
Infoapi-security-component-oauth-scope-changedscope modified in OAuth flow in components/securitySchemes
Infoapi-security-component-oauth-token-url-changedtoken URL modified in OAuth flow in components/securitySchemes
Infoapi-security-component-oauth-url-changedauth URL modified in OAuth flow in components/securitySchemes
Infoapi-security-component-type-changedsecurity scheme type modified in components/securitySchemes

Tags

2 changes

Existence2

TypeIDDescription
Infoapi-tag-addedendpoint tag added
Infoapi-tag-removedendpoint tag deleted
Breaking (198)Warning (29)Informational (247)

This list is generated from the oasdiff checks command, so it always matches the rules oasdiff actually runs. See the oasdiff GitHub repo for the source.