Catch breaking changes
Catch breaking changes before they ship
A parameter removed in one pull request is a client's outage in the next release. Catch the change that breaks a client in a required CI check, before it merges.
- A gate in every pull request
apigenie diffexits with status 1 on a breaking change, so a CI check that runs it fails the pull request that removes a field or tightens a parameter. - Your clients decide what breaksOpenAPI, Swagger 2.0, AsyncAPI, Protobuf and GraphQL are each compared by what their clients depend on, and the severities are yours to change.
- A changelog you don't write
apigenie changelogbuilds the changelog of an API from the Git history of its file, per commit or per release, with every change rated.
A removed parameter, caught
Each change is rated by what it does to a client. The exit status is 1 when one of them is breaking, and --formatter json gives a script the same report.
$ git show main:openapi.yaml > main.yaml
$ apigenie diff main.yaml openapi.yaml
openapi.yaml
26 7 non-breaking Added operation DELETE /orders/{orderId}
10 7 breaking Modified operation GET /orders/{orderId}
10 7 breaking Removed parameter expand in query
$ echo $?
1What it covers
- Two versions compared
apigenie diff: the changes as a changelog, a status or a detailed report. - A changelog from Git
apigenie changelog: the history of an API, per commit or per release. - Give clients time to migrate
apigenie evolveplans compatible additions first, then removals after a migration deadline (experimental). - Configurable severitiesDecide which changes break your clients, per standard.
- In pull requestsThe GitHub Action compares each file with the base of the pull request.
- In the editorThe Changes panel rates the edits since the last save the same way.
The tool that does it
Step by step
Catch breaking changes in CI: Fail the pull request that would break your clients, retire old operations on a schedule, and keep a changelog from git.
One check, required on every pull request
The GitHub Action compares each changed file with its version on the base branch, and the guide makes the check required, so a breaking change waits for a decision instead of merging.