minfraud 2.6.0 → 2.7.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d7569d3a79d640e8ecd0a2fe83996701e2d378bac780a2e0ee7e40ea0651136
4
- data.tar.gz: 799568df38549e698099950480c8f88e8a395df2214cfd47beb830c9f1c42a85
3
+ metadata.gz: 48d0ecc771382609286c6c96297b5c452163d99f8657a176bdaa3c25344b7667
4
+ data.tar.gz: bbb364d67a5172f3e1134833acb3835e4de6582eb079341f727963b058fe2df0
5
5
  SHA512:
6
- metadata.gz: f49ac7777a332043c94e1c73d5cfb34e1caa27477eeebc23ebb31b97929d3012378f40ebd78ca6662982d2ef3fc1f5f6f40862169e381ceb6f710e79c8e5a411
7
- data.tar.gz: 40b65dd1c1eba11d44bb0fc82e0df0e67b943ed43b521198d5c4c4bc81fe2aa79077cc6d4ca86cf873e25f0930e0f7f77b49e4ff68b1b49919cc0d5e92da8b05
6
+ metadata.gz: c66d6b084f94957a376636a4ff90ab961e5632f67e1950019dc0acf424cd9c86c8db67cbcea99aae05bfc052cd37c7e08bdc3cbde6fc4099f23009387cc611a8
7
+ data.tar.gz: f5a425d99063ca41b1ff4aba8c72f881abd08a35fbbd6d13606f31f8080964d94dc678cf6d03292c1150fcab7e67ef62ae2b05ee7b6d56a39df82a44201f966e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## v2.7.0.beta1 (2024-09-06)
4
+
5
+ * Added support for the new risk reasons outputs in minFraud Factors. The risk
6
+ reasons output codes and reasons are currently in beta and are subject to
7
+ change. We recommend that you use these beta outputs with caution and avoid
8
+ relying on them for critical applications.
9
+
3
10
  ## v2.6.0 (2024-07-08)
4
11
 
5
12
  * Updated the validation for the Report Transactions API to make the
@@ -2,11 +2,21 @@
2
2
 
3
3
  require 'minfraud/model/insights'
4
4
  require 'minfraud/model/subscores'
5
+ require 'minfraud/model/risk_score_reason'
5
6
 
6
7
  module Minfraud
7
8
  module Model
8
9
  # Model representing the Factors response.
9
10
  class Factors < Insights
11
+ # This field contains RiskScoreReason objects that describe risk score reasons
12
+ # for a given transaction that change the risk score significantly.
13
+ # Risk score reasons are usually only returned for medium to high risk transactions.
14
+ # If there were no significant changes to the risk score due to these reasons,
15
+ # then this array will be empty.
16
+ #
17
+ # @return [Array<Minfraud::Model::RiskScoreReason>]
18
+ attr_reader :risk_score_reasons
19
+
10
20
  # An object containing scores for many of the individual risk factors
11
21
  # that are used to calculate the overall risk score.
12
22
  #
@@ -17,6 +27,13 @@ module Minfraud
17
27
  def initialize(record, locales)
18
28
  super
19
29
 
30
+ @risk_score_reasons = []
31
+ if record&.key?('risk_score_reasons')
32
+ record['risk_score_reasons'].each do |r|
33
+ @risk_score_reasons << Minfraud::Model::RiskScoreReason.new(r)
34
+ end
35
+ end
36
+
20
37
  @subscores = Minfraud::Model::Subscores.new(get('subscores'))
21
38
  end
22
39
  end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minfraud/model/abstract'
4
+
5
+ module Minfraud
6
+ module Model
7
+ # The risk score reason for the multiplier.
8
+ #
9
+ # This class provides both a machine-readable code and a human-readable
10
+ # explanation of the reason for the risk score, see
11
+ # https://dev.maxmind.com/minfraud/api-documentation/responses/schema--response--risk-score-reason--multiplier-reason.
12
+ # Although more codes may be added in the future, the current codes are:
13
+ #
14
+ # * BROWSER_LANGUAGE - Riskiness of the browser user-agent and
15
+ # language associated with the request.
16
+ # * BUSINESS_ACTIVITY - Riskiness of business activity
17
+ # associated with the request.
18
+ # * COUNTRY - Riskiness of the country associated with the request.
19
+ # * CUSTOMER_ID - Riskiness of a customer's activity.
20
+ # * EMAIL_DOMAIN - Riskiness of email domain.
21
+ # * EMAIL_DOMAIN_NEW - Riskiness of newly-sighted email domain.
22
+ # * EMAIL_ADDRESS_NEW - Riskiness of newly-sighted email address.
23
+ # * EMAIL_LOCAL_PART - Riskiness of the local part of the email address.
24
+ # * EMAIL_VELOCITY - Velocity on email - many requests on same email
25
+ # over short period of time.
26
+ # * ISSUER_ID_NUMBER_COUNTRY_MISMATCH - Riskiness of the country mismatch
27
+ # between IP, billing, shipping and IIN country.
28
+ # * ISSUER_ID_NUMBER_ON_SHOP_ID - Risk of Issuer ID Number for the shop ID.
29
+ # * ISSUER_ID_NUMBER_LAST_DIGITS_ACTIVITY - Riskiness of many recent requests
30
+ # and previous high-risk requests on the IIN and last digits of the credit card.
31
+ # * ISSUER_ID_NUMBER_SHOP_ID_VELOCITY - Risk of recent Issuer ID Number activity
32
+ # for the shop ID.
33
+ # * INTRACOUNTRY_DISTANCE - Risk of distance between IP, billing,
34
+ # and shipping location.
35
+ # * ANONYMOUS_IP - Risk due to IP being an Anonymous IP.
36
+ # * IP_BILLING_POSTAL_VELOCITY - Velocity of distinct billing postal code
37
+ # on IP address.
38
+ # * IP_EMAIL_VELOCITY - Velocity of distinct email address on IP address.
39
+ # * IP_HIGH_RISK_DEVICE - High-risk device sighted on IP address.
40
+ # * IP_ISSUER_ID_NUMBER_VELOCITY - Velocity of distinct IIN on IP address.
41
+ # * IP_ACTIVITY - Riskiness of IP based on minFraud network activity.
42
+ # * LANGUAGE - Riskiness of browser language.
43
+ # * MAX_RECENT_EMAIL - Riskiness of email address
44
+ # based on past minFraud risk scores on email.
45
+ # * MAX_RECENT_PHONE - Riskiness of phone number
46
+ # based on past minFraud risk scores on phone.
47
+ # * MAX_RECENT_SHIP - Riskiness of email address
48
+ # based on past minFraud risk scores on ship address.
49
+ # * MULTIPLE_CUSTOMER_ID_ON_EMAIL - Riskiness of email address
50
+ # having many customer IDs.
51
+ # * ORDER_AMOUNT - Riskiness of the order amount.
52
+ # * ORG_DISTANCE_RISK - Risk of ISP and distance between
53
+ # billing address and IP location.
54
+ # * PHONE - Riskiness of the phone number or related numbers.
55
+ # * CART - Riskiness of shopping cart contents.
56
+ # * TIME_OF_DAY - Risk due to local time of day.
57
+ # * TRANSACTION_REPORT_EMAIL - Risk due to transaction reports
58
+ # on the email address.
59
+ # * TRANSACTION_REPORT_IP - Risk due to transaction reports on the IP address.
60
+ # * TRANSACTION_REPORT_PHONE - Risk due to transaction reports
61
+ # on the phone number.
62
+ # * TRANSACTION_REPORT_SHIP - Risk due to transaction reports
63
+ # on the shipping address.
64
+ # * EMAIL_ACTIVITY - Riskiness of the email address
65
+ # based on minFraud network activity.
66
+ # * PHONE_ACTIVITY - Riskiness of the phone number
67
+ # based on minFraud network activity.
68
+ # * SHIP_ACTIVITY - Riskiness of ship address based on minFraud network activity.
69
+ class Reason < Abstract
70
+ # This value is a machine-readable code identifying the reason.
71
+ #
72
+ # @return [String]
73
+ attr_reader :code
74
+
75
+ # This property provides a human-readable explanation of the reason. The
76
+ # description may change at any time and should not be matched against.
77
+ #
78
+ # @return [String]
79
+ attr_reader :reason
80
+
81
+ # @!visibility private
82
+ def initialize(record)
83
+ super
84
+
85
+ @code = get('code')
86
+ @reason = get('reason')
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minfraud/model/reason'
4
+
5
+ module Minfraud
6
+ module Model
7
+ # The risk score multiplier and the reasons for that multiplier.
8
+ class RiskScoreReason < Abstract
9
+ # The factor by which the risk score is increased (if the value is greater than 1)
10
+ # or decreased (if the value is less than 1) for given risk reason(s).
11
+ # Multipliers greater than 1.5 and less than 0.66 are considered significant
12
+ # and lead to risk reason(s) being present.
13
+ #
14
+ # @return [Float]
15
+ attr_reader :multiplier
16
+
17
+ # This field contains Risk objects that describe one of the reasons for the multiplier.
18
+ #
19
+ # @return [Array<Minfraud::Model::Risk>]
20
+ attr_reader :reasons
21
+
22
+ # @!visibility private
23
+ def initialize(record)
24
+ super
25
+
26
+ @multiplier = get('multiplier')
27
+
28
+ @reasons = []
29
+ if record&.key?('reasons')
30
+ record['reasons'].each do |r|
31
+ @reasons << Minfraud::Model::Reason.new(r)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Minfraud
4
4
  # The Gem version.
5
- VERSION = '2.6.0'
5
+ VERSION = '2.7.0.beta1'
6
6
  end
data/minfraud.gemspec CHANGED
@@ -22,10 +22,10 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_runtime_dependency 'connection_pool', '~> 2.2'
26
- spec.add_runtime_dependency 'http', '>= 4.3', '< 6.0'
27
- spec.add_runtime_dependency 'maxmind-geoip2', '~> 1.2'
28
- spec.add_runtime_dependency 'simpleidn', '~> 0.1', '>= 0.1.1'
25
+ spec.add_dependency 'connection_pool', '~> 2.2'
26
+ spec.add_dependency 'http', '>= 4.3', '< 6.0'
27
+ spec.add_dependency 'maxmind-geoip2', '~> 1.2'
28
+ spec.add_dependency 'simpleidn', '~> 0.1', '>= 0.1.1'
29
29
 
30
30
  spec.add_development_dependency 'bundler', '~> 2.2'
31
31
  spec.add_development_dependency 'rake', '~> 13.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minfraud
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.0
4
+ version: 2.7.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - kushnir.yb
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-07-08 00:00:00.000000000 Z
12
+ date: 2024-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: connection_pool
@@ -204,6 +204,8 @@ files:
204
204
  - lib/minfraud/model/ip_risk_reason.rb
205
205
  - lib/minfraud/model/issuer.rb
206
206
  - lib/minfraud/model/phone.rb
207
+ - lib/minfraud/model/reason.rb
208
+ - lib/minfraud/model/risk_score_reason.rb
207
209
  - lib/minfraud/model/score.rb
208
210
  - lib/minfraud/model/score_ip_address.rb
209
211
  - lib/minfraud/model/shipping_address.rb
@@ -234,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
234
236
  - !ruby/object:Gem::Version
235
237
  version: '0'
236
238
  requirements: []
237
- rubygems_version: 3.5.11
239
+ rubygems_version: 3.5.16
238
240
  signing_key:
239
241
  specification_version: 4
240
242
  summary: Ruby API for the minFraud Score, Insights, Factors, and Report Transactions