# Breaking changes

Each version you push is compared with the version before it. Every change found has a kind and a level: breaking, warning or information. The version's diff lists them, breaking changes first.

## Breaking

| Kind | What changed |
| --- | --- |
| `operation-removed` | An operation (a method and a path) is gone, and no new operation has its operationId. |
| `operation-moved` | An operation’s method or path changed. It’s matched to the old one by its operationId. |
| `parameter-removed` | A parameter an operation took is gone. |
| `parameter-became-required` | An optional parameter is now required. |
| `required-parameter-added` | An operation has a new parameter, and it’s required. |
| `request-body-became-required` | An operation’s request body is now required. |
| `response-property-removed` | A property is gone from a JSON success response. |
| `response-property-type-changed` | A JSON success response, or a property in it, has a different type. |
| `response-enum-value-added` | An enum in a JSON success response has a new value, which clients may not handle. |
| `request-enum-value-removed` | An enum in a parameter or a JSON request body lost a value clients may still send. |
| `success-response-removed` | A 2xx response an operation had is gone. |
| `security-requirement-added` | An operation’s security asks for a scheme that a client meeting the old requirement doesn’t have. A new alternative breaks nobody. |
| `security-scheme-changed` | A security scheme an operation uses changed its type, location, name, scheme, bearer format or flows. |
| `server-url-removed` | A URL in `servers` is gone. |

## Warnings

| Kind | What changed |
| --- | --- |
| `operation-id-changed` | An operation’s operationId changed, so agents see a new tool name. |
| `description-removed` | An operation or a parameter lost its description. |
| `operation-deprecated` | An operation is now marked deprecated. |

## Information

| Kind | What changed |
| --- | --- |
| `operation-added` | A new operation. |
| `optional-parameter-added` | An operation has a new optional parameter. |
| `response-property-added` | A JSON success response has a new property. |

## In CI

The GitHub Action's `fail-on-breaking` input, off by default, fails the job when the diff has a breaking change.

## Where this comes from

- `app/registry/_lib/diff.ts`
- `tests/fixtures/registry/diff/`
- `app/registry/_lib/ci.ts`
