Skip to content

Commit f976748

Browse files
oschwaldclaude
andcommitted
Add residential attribute to the anonymizer object
The minFraud Insights and Factors web services now return a residential sub-object on ip_address.anonymizer containing residential proxy data for the network: a confidence score, the network last seen date, and the provider name. It may be populated even when no other anonymizer attributes are set. This is exposed automatically via MaxMind::GeoIP2::Record::Anonymizer#residential once the app is running maxmind-geoip2 >= 1.6.0, so no model changes are needed here, only updated fixtures, specs, and the changelog. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 64b0f54 commit f976748

4 files changed

Lines changed: 25 additions & 2 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
## v2.10.0
44

5+
* Added the `residential` attribute to the `anonymizer` object on
6+
`Minfraud::Model::IPAddress`. This object contains residential proxy
7+
data for the network, including a confidence score, the network last
8+
seen date, and the provider name. It may be populated even when no
9+
other anonymizer attributes are set. This is only available from the
10+
minFraud Insights and Factors web services. This requires version
11+
1.6.0 or greater of the maxmind-geoip2 gem.
512
* Added the `tracking_token` attribute to `Minfraud::Components::Device`.
613
This is the token generated by the
714
[Device Tracking Add-on](https://dev.maxmind.com/minfraud/track-devices)

spec/fixtures/files/factors-response1.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,12 @@
139139
"is_residential_proxy": true,
140140
"is_tor_exit_node": true,
141141
"network_last_seen": "2025-01-15",
142-
"provider_name": "TestVPN"
142+
"provider_name": "TestVPN",
143+
"residential": {
144+
"confidence": 82,
145+
"network_last_seen": "2026-05-11",
146+
"provider_name": "quickshift"
147+
}
143148
}
144149
},
145150
"billing_address": {

spec/fixtures/files/insights-response1.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,12 @@
151151
"is_residential_proxy": true,
152152
"is_tor_exit_node": true,
153153
"network_last_seen": "2025-01-15",
154-
"provider_name": "TestVPN"
154+
"provider_name": "TestVPN",
155+
"residential": {
156+
"confidence": 82,
157+
"network_last_seen": "2026-05-11",
158+
"provider_name": "quickshift"
159+
}
155160
}
156161
},
157162
"billing_address": {

spec/model/insights_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,12 @@
100100
provider_name: 'TestVPN'
101101
)
102102

103+
expect(m.ip_address.anonymizer.residential).to have_attributes(
104+
confidence: 82,
105+
network_last_seen: Date.new(2_026, 5, 11),
106+
provider_name: 'quickshift'
107+
)
108+
103109
expect(m.billing_address.is_postal_in_city).to be false
104110
expect(m.billing_address.latitude).to eq 41.310571
105111
expect(m.billing_address.longitude).to eq(-72.922891)

0 commit comments

Comments
 (0)