Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions MaxMind.MinFraud/MaxMind.MinFraud.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<Description>API for MaxMind minFraud Score and Insights web services</Description>
<VersionPrefix>6.0.0-beta1</VersionPrefix>
<VersionPrefix>6.0.0</VersionPrefix>
<TargetFrameworks>net10.0;net9.0;net8.0;netstandard2.1;netstandard2.0</TargetFrameworks>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<AssemblyName>MaxMind.MinFraud</AssemblyName>
Expand Down Expand Up @@ -37,7 +37,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="MaxMind.GeoIP2" Version="6.0.0-beta1" />
<PackageReference Include="MaxMind.GeoIP2" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="10.0.8" />
</ItemGroup>

Expand Down
18 changes: 15 additions & 3 deletions releasenotes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Release Notes

## 6.0.0-beta1
## 6.0.0 (2026-05-22)

- **BREAKING:** All response classes in `MaxMind.MinFraud.Response` have been
converted from classes to records.
Expand All @@ -10,6 +10,11 @@
Use object initializer syntax instead.
- **BREAKING:** The `SetLocales` method has been removed from
`MaxMind.MinFraud.Response.IPAddress`.
- **BREAKING:** The `Tag` property on
`MaxMind.MinFraud.Request.TransactionReport` is now `required`. Previously,
omitting it in object-initializer syntax would silently default to `NotFraud`.
- **BREAKING:** The minimum `MaxMind.GeoIP2` dependency has been bumped to 6.0.0
(a transitive breaking change).
- Added `TrackingToken` property to `MaxMind.MinFraud.Request.Device`. This is
the token generated by the
[Device Tracking Add-on](https://dev.maxmind.com/minfraud/track-devices) for
Expand All @@ -18,8 +23,15 @@
`PaymentProcessor` enum.
- Added `Clear` to the `TransactionReportTag` enum for use with the Report
Transaction API.
- **BREAKING:** The minimum `MaxMind.GeoIP2` dependency has been bumped to 6.0.0
(a transitive breaking change).
- `ReportAsync` on `MaxMind.MinFraud.WebServiceClient` now validates that the
`TransactionReport` includes at least one of `IPAddress`, `MinFraudId`,
`MaxMindId`, or `TransactionId`, throwing `ArgumentException` if none are set.
Previously this check only ran in the (now obsolete) constructor.
Comment on lines +26 to +29
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Since ReportAsync now throws an ArgumentException where it previously did not (when using object initializers), this change is technically a behavior change that can impact existing code. Consider marking this entry as BREAKING to alert users to the new validation logic, consistent with other breaking changes listed for this release.

Suggested change
- `ReportAsync` on `MaxMind.MinFraud.WebServiceClient` now validates that the
`TransactionReport` includes at least one of `IPAddress`, `MinFraudId`,
`MaxMindId`, or `TransactionId`, throwing `ArgumentException` if none are set.
Previously this check only ran in the (now obsolete) constructor.
- **BREAKING:** `ReportAsync` on `MaxMind.MinFraud.WebServiceClient` now
validates that the `TransactionReport` includes at least one of `IPAddress`,
`MinFraudId`, `MaxMindId`, or `TransactionId`, throwing `ArgumentException` if
none are set. Previously this check only ran in the (now obsolete)
constructor.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may have made sense, but it is too late.

- A `Guid.Empty` value assigned to the `MinFraudId` property on
`MaxMind.MinFraud.Request.TransactionReport` is now normalized to `null`,
matching the behavior of the obsolete constructor.
- Fixed a missing `ConfigureAwait(false)` in `ReportAsync` that could cause
deadlocks in synchronous-over-asynchronous contexts.
- Custom `ToString()` overrides have been removed from all response and request
classes. Records generate `ToString()` automatically.

Expand Down
Loading