Holm0563.OpenApi.Comparator
1.0.0
dotnet add package Holm0563.OpenApi.Comparator --version 1.0.0
NuGet\Install-Package Holm0563.OpenApi.Comparator -Version 1.0.0
<PackageReference Include="Holm0563.OpenApi.Comparator" Version="1.0.0" />
<PackageVersion Include="Holm0563.OpenApi.Comparator" Version="1.0.0" />
<PackageReference Include="Holm0563.OpenApi.Comparator" />
paket add Holm0563.OpenApi.Comparator --version 1.0.0
#r "nuget: Holm0563.OpenApi.Comparator, 1.0.0"
#:package Holm0563.OpenApi.Comparator@1.0.0
#addin nuget:?package=Holm0563.OpenApi.Comparator&version=1.0.0
#tool nuget:?package=Holm0563.OpenApi.Comparator&version=1.0.0
Open API Comparator
An OpenAPI tool to compare OpenAPI Specifications.
C# Library
The tool is available as a nuget package, directly usable into your C# application.
To install it run the command:
dotnet add package Criteo.OpenApi.Comparator
Here is an example of how to use the Comparator:
var result = OpenApiComparator.Compare(
out var differences,
oldOpenApiSpec,
newOpenApiSpec
);
Here is an example of how to use the Comparator with custom rules:
var result = OpenApiComparator.Compare(
out var differences,
oldOpenApiSpec,
newOpenApiSpec
);
// Ignore codes
differences.RemoveAll(s => s.Code is "VersionsReversed" or "NoVersionChange");
// Change severity
differences.Where(s => s.Mode == MessageType.Addition).ToList()
.ForEach(s => s.Severity = MessageSeverity.Info);
// Calculate new result based on remaining rules
var newResult = OpenApiComparator.GetLevel(differences);
Command line tool
The comparator is available at command line tool.
The CLI has not yet been included as part of this fork.
Comparison rules
Each comparison rule is documented in the documentation section.
OpenAPI version support
Internally, the comparator uses microsoft/OpenAPI.NET which currently supports OpenAPI 2.0 to 3.0.0.
Versions
1.0
- Made breaking changes to support that additive changes are allowed by default
- Compare now returns a Change level that reflects the result or all found changes.
- Removed strict mode.
- When not in strict mode there were very few errors in previous versions
- A major version update in the spec is now considered an Breaking rule in that your API can intentionally change.
- Combined the Parsing Errors with the Comparsion Messages
- On the message itself a code will now always uniquely identify the message severity
- Severity now includes a Breaking severity
- Split up several Code so that they are easier to identify and customize
- ConstrantIsStronger
- ResponseConstraintIsStronger
- EnumConstrantIsStronger
- AddedPropertyInResponse
- AddedBreakingPropertyInResponse
- ConstraintChanged
- EnumConstraintChanged
- MultipleOfConstraintChanged
- UniqueItemsConstraintChanged
- Added new Codes
- MajorVersionChange
- MinorVersionChange
- NonSemanticVersion
- ConstrantIsStronger
- Removed .NET 6 support as its no longer supported by Microsoft
Contributing
Any contribution is more than welcomed. For now, no specific rule must be applied to contribute, just create an Issue or a Pull Request and we'll try to handle it ASAP.
License
OpenApi Comparator is an Open Source software released under the Apache 2.0 license.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.OpenApi (>= 1.6.24)
- Microsoft.OpenApi.Readers (>= 1.6.24)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.0.0 | 153 | 6/17/2025 |
1.0.0-beta.3 | 116 | 6/16/2025 |