Compare two OpenAPI/Swagger specs and generate a detailed changelog with breaking change detection.
python3 scripts/api_diff.py old-spec.json new-spec.json
# Text (default) python3 scripts/api_diff.py old.json new.json # JSON python3 scripts/api_diff.py old.json new.json --format json # Markdown python3 scripts/api_diff.py old.json new.json --format markdown小葱技能站7w4.net每天更新,海量AI技能等你发现。
# Fail if breaking changes found
python3 scripts/api_diff.py old.json new.json --fail-on-breaking
echo $? # 0 = no breaking, 1 = breaking found
# Show only breaking changes
python3 scripts/api_diff.py old.json new.json --breaking-only
| Change | Breaking? | Description |
|---|---|---|
| Endpoint removed | Yes | Path+method no longer exists |
| Endpoint added | No | New path+method |
| Endpoint deprecated | No | Marked as deprecated |
| Change | Breaking? | Description |
|---|---|---|
| Required param added | Yes | New mandatory parameter |
| Optional param added | No | New optional parameter |
| Param removed (required) | Yes | Required parameter removed |
| Param type changed | Yes | Data type changed |
| Param became required | Yes | Optional → required |
| Param became optional | No | Required → optional |
| Change | Breaking? | Description |
|---|---|---|
| Schema removed | Yes | Definition removed |
| Required property added | Yes | New mandatory field |
| Optional property added | No | New optional field |
| Property removed | Yes | Field removed |
| Property type changed | Yes | Data type changed |
| Enum value removed | Yes | Allowed value removed |
| Enum value added | No | New allowed value |
| Change | Breaking? | Description |
|---|---|---|
| Response code removed | Yes | HTTP status no longer returned |
| Response code added | No | New HTTP status |
| Security changed | Yes | Auth requirements changed |
| Server URLs changed | No | Base URL changed |
| API version changed | No | Info version updated |
api-diff 是一款实用的 API 变更检测工具,能准确识别破坏性变更,支持多种输出格式,CI 集成友好。代码质量高,逻辑清晰,依赖简单。缺点是 YAML 解析和深层 Schema 比较还有优化空间。