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
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
CHANGELOG
=========

8.3.0
8.3.0 (2026-01-20)
------------------

* Added `Banquest`, `SummitPayments`, and `Yaadpay` to the `Processor` enum.
* Added `anonymizer` property to the `IpAddress` interface. This contains
information about whether the IP address is an anonymous network, including
confidence score, VPN provider name, and various anonymizer type flags.

8.2.1 (2025-11-25)
------------------
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -299,6 +299,6 @@ This API uses [Semantic Versioning](https://semver.org/).

## Copyright and License

This software is Copyright (c) 2019-2025 by MaxMind, Inc.
This software is Copyright (c) 2019-2026 by MaxMind, Inc.

This is free software, licensed under the Apache License, Version 2.0.
11 changes: 11 additions & 0 deletions fixtures/insights.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,17 @@
"reason": "Suspicious activity has been seen on this IP address across minFraud customers."
}
],
"anonymizer": {
"confidence": 99,
"is_anonymous": true,
"is_anonymous_vpn": true,
"is_hosting_provider": true,
"is_public_proxy": true,
"is_residential_proxy": false,
"is_tor_exit_node": true,
"network_last_seen": "2025-01-15",
"provider_name": "TestVPN"
},
"city": {
"confidence": 25,
"geoname_id": 54321,
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@maxmind/minfraud-api-node",
"version": "8.2.1",
"version": "8.3.0",
"description": "Node.js API for MaxMind minFraud web services",
"main": "dist/src/index.js",
"homepage": "https://github.com/maxmind/minfraud-api-node",
Expand Down
21 changes: 21 additions & 0 deletions src/response/models/insights.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,25 @@ describe('Insights()', () => {
const model = new Insights(response as InsightsResponse);
expect(model.email?.domain?.visit?.hasRedirect).toBe(false);
});

it('allows /ip_address/anonymizer to be accessed', () => {
const model = new Insights(response as InsightsResponse);
expect(model.ipAddress?.anonymizer).toEqual({
confidence: 99,
isAnonymous: true,
isAnonymousVpn: true,
isHostingProvider: true,
isPublicProxy: true,
isResidentialProxy: false,
isTorExitNode: true,
networkLastSeen: '2025-01-15',
providerName: 'TestVPN',
});
});

it('handles empty anonymizer responses', () => {
delete response.ip_address.anonymizer;
const model = new Insights(response as InsightsResponse);
expect(model.ipAddress?.anonymizer).toBeUndefined();
});
});
12 changes: 11 additions & 1 deletion src/response/records.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
import { CountryRecord, Insights, LocationRecord } from '@maxmind/geoip2-node';
import {
AnonymizerRecord,
CountryRecord,
Insights,
LocationRecord,
} from '@maxmind/geoip2-node';
import {
CreditCardType,
DispositionAction,
Expand Down Expand Up @@ -62,6 +67,11 @@ export interface IpRiskReasons {
* Model for minFraud GeoIP2 Insights data.
*/
export interface IpAddress extends Insights {
/**
* Anonymizer object for the requested IP address. This contains information
* about whether the IP address is associated with an anonymizing service.
*/
readonly anonymizer?: AnonymizerRecord;
/**
* Country object for the requested IP address. This record represents the
* country where MaxMind believes the IP is located.
Expand Down