From 0c2e014d801d094bc3e5a702388ef36168b4b9f3 Mon Sep 17 00:00:00 2001 From: Gregory Oschwald Date: Tue, 20 Jan 2026 09:17:40 -0800 Subject: [PATCH 1/3] Add anonymizer property to IpAddress interface Co-Authored-By: Claude Opus 4.5 --- CHANGELOG.md | 3 +++ fixtures/insights.json | 11 +++++++++++ src/response/models/insights.spec.ts | 21 +++++++++++++++++++++ src/response/records.ts | 12 +++++++++++- 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03676120..064307f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ CHANGELOG ------------------ * 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) ------------------ diff --git a/fixtures/insights.json b/fixtures/insights.json index 5744eb6f..8f2ef903 100644 --- a/fixtures/insights.json +++ b/fixtures/insights.json @@ -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, diff --git a/src/response/models/insights.spec.ts b/src/response/models/insights.spec.ts index 67365cd7..67022989 100644 --- a/src/response/models/insights.spec.ts +++ b/src/response/models/insights.spec.ts @@ -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(); + }); }); diff --git a/src/response/records.ts b/src/response/records.ts index 44b22b1a..93be29b9 100644 --- a/src/response/records.ts +++ b/src/response/records.ts @@ -1,4 +1,9 @@ -import { CountryRecord, Insights, LocationRecord } from '@maxmind/geoip2-node'; +import { + AnonymizerRecord, + CountryRecord, + Insights, + LocationRecord, +} from '@maxmind/geoip2-node'; import { CreditCardType, DispositionAction, @@ -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. From 031f34e43a4168f7c499ed2ebf96c0dcbb674a47 Mon Sep 17 00:00:00 2001 From: Gregory Oschwald Date: Tue, 20 Jan 2026 10:55:58 -0800 Subject: [PATCH 2/3] Set release date and update copyright year --- CHANGELOG.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 064307f7..4211683e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ CHANGELOG ========= -8.3.0 +8.3.0 (2026-01-20) ------------------ * Added `Banquest`, `SummitPayments`, and `Yaadpay` to the `Processor` enum. diff --git a/README.md b/README.md index bfa9e356..ae993c43 100644 --- a/README.md +++ b/README.md @@ -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. From 121477e79208da42e81c617dc503fb0bd2c9288f Mon Sep 17 00:00:00 2001 From: Gregory Oschwald Date: Tue, 20 Jan 2026 10:56:19 -0800 Subject: [PATCH 3/3] Prepare for 8.3.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f412ee4..7da9c981 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@maxmind/minfraud-api-node", - "version": "8.2.1", + "version": "8.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@maxmind/minfraud-api-node", - "version": "8.2.1", + "version": "8.3.0", "license": "Apache-2.0", "dependencies": { "@maxmind/geoip2-node": "^6.3.0", diff --git a/package.json b/package.json index 8281dc22..747abdf1 100644 --- a/package.json +++ b/package.json @@ -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",