diff --git a/CHANGELOG.md b/CHANGELOG.md index 92548c5..17a764b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## v2.10.0 +* Added the `residential` attribute to the `anonymizer` object on + `Minfraud::Model::IPAddress`. This object contains data from the GeoIP + Residential Proxy database, including confidence scoring, provider name + detection, and network last seen date for residential proxies. This is + only available from the minFraud Insights and Factors web services. This + requires version 1.6.0 or greater of the maxmind-geoip2 gem. * Added the `tracking_token` attribute to `Minfraud::Components::Device`. This is the token generated by the [Device Tracking Add-on](https://dev.maxmind.com/minfraud/track-devices) diff --git a/spec/fixtures/files/factors-response1.json b/spec/fixtures/files/factors-response1.json index 3242ffa..40bddaa 100644 --- a/spec/fixtures/files/factors-response1.json +++ b/spec/fixtures/files/factors-response1.json @@ -139,7 +139,12 @@ "is_residential_proxy": true, "is_tor_exit_node": true, "network_last_seen": "2025-01-15", - "provider_name": "TestVPN" + "provider_name": "TestVPN", + "residential": { + "confidence": 82, + "network_last_seen": "2026-05-11", + "provider_name": "quickshift" + } } }, "billing_address": { diff --git a/spec/fixtures/files/insights-response1.json b/spec/fixtures/files/insights-response1.json index 9699671..84e3352 100644 --- a/spec/fixtures/files/insights-response1.json +++ b/spec/fixtures/files/insights-response1.json @@ -151,7 +151,12 @@ "is_residential_proxy": true, "is_tor_exit_node": true, "network_last_seen": "2025-01-15", - "provider_name": "TestVPN" + "provider_name": "TestVPN", + "residential": { + "confidence": 82, + "network_last_seen": "2026-05-11", + "provider_name": "quickshift" + } } }, "billing_address": { diff --git a/spec/model/insights_spec.rb b/spec/model/insights_spec.rb index 369ff93..3dbe4d0 100644 --- a/spec/model/insights_spec.rb +++ b/spec/model/insights_spec.rb @@ -100,6 +100,12 @@ provider_name: 'TestVPN' ) + expect(m.ip_address.anonymizer.residential).to have_attributes( + confidence: 82, + network_last_seen: Date.new(2_026, 5, 11), + provider_name: 'quickshift' + ) + expect(m.billing_address.is_postal_in_city).to be false expect(m.billing_address.latitude).to eq 41.310571 expect(m.billing_address.longitude).to eq(-72.922891)