minfraud 2.5.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: b2c683916a690e43c095a9fcb4b08118b5516919245fc5bf47d8b7b1de51f2be
4
- data.tar.gz: 65135f9eb185edacfdc737d195cd283b77e6a548b49854f4b4964f8d7d061d39
3
+ metadata.gz: 48d0ecc771382609286c6c96297b5c452163d99f8657a176bdaa3c25344b7667
4
+ data.tar.gz: bbb364d67a5172f3e1134833acb3835e4de6582eb079341f727963b058fe2df0
5
5
  SHA512:
6
- metadata.gz: b5642ec35609ebe7463b8a252593247d2676df99fafcf374ddca1c8463160ede4e4dc2c7b3adbf398ec54daf23640e9625443a60723e4afe01098caede9ee66a
7
- data.tar.gz: 7276700318812cd0bd9b306237018cba29107a5723b8c4ddf6f76d0ed2394deea191655f149069d1cf0c11b5864725fc834805b42c39afc1daf2c616ee0a30ba
6
+ metadata.gz: c66d6b084f94957a376636a4ff90ab961e5632f67e1950019dc0acf424cd9c86c8db67cbcea99aae05bfc052cd37c7e08bdc3cbde6fc4099f23009387cc611a8
7
+ data.tar.gz: f5a425d99063ca41b1ff4aba8c72f881abd08a35fbbd6d13606f31f8080964d94dc678cf6d03292c1150fcab7e67ef62ae2b05ee7b6d56a39df82a44201f966e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
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
+
10
+ ## v2.6.0 (2024-07-08)
11
+
12
+ * Updated the validation for the Report Transactions API to make the
13
+ `ip_address` parameter optional. Now the `tag` and at least one of the
14
+ following parameters must be supplied: `ip_address`, `maxmind_id`,
15
+ `minfraud_id`, `transaction_id`.
16
+ * Updated the validation for the Report Transactions API to check that
17
+ `ip_address`, `maxmind_id`, and `minfraud_id` contain valid values.
18
+ * Added `billing_phone` and `shipping_phone` attributes to the minFraud
19
+ Insights and Factors response models. These contain objects with
20
+ information about the respective phone numbers. Please see [our developer
21
+ site](https://dev.maxmind.com/minfraud/api-documentation/responses/) for
22
+ more information.
23
+ * Added the processor `:payconex` to `Minfraud::Components::Payment`.
24
+
3
25
  ## v2.5.0 (2024-04-16)
4
26
 
5
27
  * Equivalent domain names are now normalized when `hash_address` is used.
data/README.md CHANGED
@@ -208,9 +208,9 @@ channel is used to improve the accuracy of their fraud detection
208
208
  algorithms.
209
209
 
210
210
  To use the Report Transaction API, create a
211
- `Minfraud::Components::Report::Transaction` object. An IP address and a
212
- valid tag are required arguments for this API. Additional parameters may be
213
- set, as shown below.
211
+ `Minfraud::Components::Report::Transaction` object. A valid tag and at least
212
+ one of the following are required parameters: ip_address, maxmind_id,
213
+ minfraud_id, transaction_id. Additional parameters may be set, as shown below.
214
214
 
215
215
  If the report is successful, nothing is returned. If the report fails, an
216
216
  exception will be thrown.
@@ -108,6 +108,7 @@ module Minfraud
108
108
  orangepay
109
109
  other
110
110
  pacnet_services
111
+ payconex
111
112
  payeezy
112
113
  payfast
113
114
  paygate
@@ -8,9 +8,13 @@ module Minfraud
8
8
  # @see https://dev.maxmind.com/minfraud/report-a-transaction?lang=en
9
9
  class Transaction < Base
10
10
  include ::Minfraud::Enum
11
+ include ::Minfraud::Validates
11
12
 
12
13
  # The IP address of the customer placing the order. This should be
13
- # passed as a string like "152.216.7.110".
14
+ # passed as a string like "152.216.7.110". This field is not required
15
+ # if you provide at least one of the transaction's minfraud_id,
16
+ # maxmind_id, or transaction_id. You are encouraged to provide it, if
17
+ # possible.
14
18
  #
15
19
  # @return [String, nil]
16
20
  attr_accessor :ip_address
@@ -34,16 +38,19 @@ module Minfraud
34
38
 
35
39
  # A unique eight character string identifying a minFraud Standard or
36
40
  # Premium request. These IDs are returned in the maxmindID field of a
37
- # response for a successful minFraud request. This field is not
38
- # required, but you are encouraged to provide it, if possible.
41
+ # response for a successful minFraud request. This field is not required
42
+ # if you provide at least one of the transaction's ip_address,
43
+ # minfraud_id, or transaction_id. You are encouraged to provide it, if
44
+ # possible.
39
45
  #
40
46
  # @return [String, nil]
41
47
  attr_accessor :maxmind_id
42
48
 
43
49
  # A UUID that identifies a minFraud Score, minFraud Insights, or
44
50
  # minFraud Factors request. This ID is returned at /id in the response.
45
- # This field is not required, but you are encouraged to provide it if
46
- # the request was made to one of these services.
51
+ # This field is not required if you provide at least one of the
52
+ # transaction's ip_address, maxmind_id, or transaction_id. You are
53
+ # encouraged to provide it, if possible.
47
54
  #
48
55
  # @return [String, nil]
49
56
  attr_accessor :minfraud_id
@@ -56,9 +63,10 @@ module Minfraud
56
63
  # @return [String, nil]
57
64
  attr_accessor :notes
58
65
 
59
- # The transaction ID you originally passed to minFraud. This field is
60
- # not required, but you are encouraged to provide it or the
61
- # transaction's maxmind_id or minfraud_id.
66
+ # The transaction ID you originally passed to minFraud. This field
67
+ # is not required if you provide at least one of the transaction's
68
+ # ip_address, maxmind_id, or minfraud_id. You are encouraged to
69
+ # provide it, if possible.
62
70
  #
63
71
  # @return [String, nil]
64
72
  attr_accessor :transaction_id
@@ -73,6 +81,30 @@ module Minfraud
73
81
  @notes = params[:notes]
74
82
  @transaction_id = params[:transaction_id]
75
83
  self.tag = params[:tag]
84
+
85
+ validate
86
+ end
87
+
88
+ private
89
+
90
+ def validate
91
+ return if !Minfraud.enable_validation
92
+
93
+ validate_ip('ip_address', @ip_address)
94
+ validate_string('maxmind_id', 8, @maxmind_id)
95
+ validate_uuid('minfraud_id', @minfraud_id)
96
+
97
+ if ip_address.nil? &&
98
+ (minfraud_id.nil? || empty_uuid(minfraud_id)) &&
99
+ (maxmind_id.nil? || maxmind_id.empty?) &&
100
+ (transaction_id.nil? || transaction_id.empty?)
101
+ raise ArgumentError, 'At least one of the following is required: ip_address, minfraud_id, maxmind_id, transaction_id.'
102
+ end
103
+ end
104
+
105
+ def empty_uuid(value)
106
+ stripped_value = value.to_s.gsub('-', '')
107
+ stripped_value == '0' * 32
76
108
  end
77
109
  end
78
110
  end
@@ -39,7 +39,7 @@ module Minfraud
39
39
 
40
40
  # @!visibility private
41
41
  def initialize(record)
42
- super(record)
42
+ super
43
43
 
44
44
  @distance_to_ip_location = get('distance_to_ip_location')
45
45
  @is_in_ip_country = get('is_in_ip_country')
@@ -57,7 +57,7 @@ module Minfraud
57
57
 
58
58
  # @!visibility private
59
59
  def initialize(record)
60
- super(record)
60
+ super
61
61
 
62
62
  @brand = get('brand')
63
63
  @country = get('country')
@@ -39,7 +39,7 @@ module Minfraud
39
39
 
40
40
  # @!visibility private
41
41
  def initialize(record)
42
- super(record)
42
+ super
43
43
 
44
44
  @confidence = get('confidence')
45
45
  @id = get('id')
@@ -31,7 +31,7 @@ module Minfraud
31
31
 
32
32
  # @!visibility private
33
33
  def initialize(record)
34
- super(record)
34
+ super
35
35
 
36
36
  @action = get('action')
37
37
  @reason = get('reason')
@@ -41,7 +41,7 @@ module Minfraud
41
41
 
42
42
  # @!visibility private
43
43
  def initialize(record)
44
- super(record)
44
+ super
45
45
 
46
46
  @domain = Minfraud::Model::EmailDomain.new(get('domain'))
47
47
  @first_seen = get('first_seen')
@@ -15,7 +15,7 @@ module Minfraud
15
15
 
16
16
  # @!visibility private
17
17
  def initialize(record)
18
- super(record)
18
+ super
19
19
 
20
20
  @first_seen = get('first_seen')
21
21
  end
@@ -18,7 +18,7 @@ module Minfraud
18
18
 
19
19
  # @!visibility private
20
20
  def initialize(record)
21
- super(record)
21
+ super
22
22
 
23
23
  @code = get('code')
24
24
  @error = get('error')
@@ -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
  #
@@ -15,7 +25,14 @@ module Minfraud
15
25
 
16
26
  # @!visibility private
17
27
  def initialize(record, locales)
18
- super(record, locales)
28
+ super
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
19
36
 
20
37
  @subscores = Minfraud::Model::Subscores.new(get('subscores'))
21
38
  end
@@ -16,7 +16,7 @@ module Minfraud
16
16
 
17
17
  # @!visibility private
18
18
  def initialize(record)
19
- super(record)
19
+ super
20
20
 
21
21
  @local_time = get('local_time')
22
22
  end
@@ -5,6 +5,7 @@ require 'minfraud/model/credit_card'
5
5
  require 'minfraud/model/device'
6
6
  require 'minfraud/model/email'
7
7
  require 'minfraud/model/ip_address'
8
+ require 'minfraud/model/phone'
8
9
  require 'minfraud/model/score'
9
10
  require 'minfraud/model/shipping_address'
10
11
 
@@ -18,6 +19,12 @@ module Minfraud
18
19
  # @return [Minfraud::Model::BillingAddress]
19
20
  attr_reader :billing_address
20
21
 
22
+ # An object containing minFraud data related to the billing phone
23
+ # number used in the transaction.
24
+ #
25
+ # @return [Minfraud::Model::Phone]
26
+ attr_reader :billing_phone
27
+
21
28
  # An object containing minFraud data about the credit card used in the
22
29
  # transaction.
23
30
  #
@@ -48,13 +55,20 @@ module Minfraud
48
55
  # @return [Minfraud::Model::ShippingAddress]
49
56
  attr_reader :shipping_address
50
57
 
58
+ # An object containing minFraud data related to the shipping phone
59
+ # number used in the transaction.
60
+ #
61
+ # @return [Minfraud::Model::Phone]
62
+ attr_reader :shipping_phone
63
+
51
64
  # @!visibility private
52
65
  def initialize(record, locales)
53
- super(record, locales)
66
+ super
54
67
 
55
68
  @billing_address = Minfraud::Model::BillingAddress.new(
56
69
  get('billing_address')
57
70
  )
71
+ @billing_phone = Minfraud::Model::Phone.new(get('billing_phone'))
58
72
  @credit_card = Minfraud::Model::CreditCard.new(get('credit_card'))
59
73
  @device = Minfraud::Model::Device.new(get('device'))
60
74
  @email = Minfraud::Model::Email.new(get('email'))
@@ -62,6 +76,7 @@ module Minfraud
62
76
  @shipping_address = Minfraud::Model::ShippingAddress.new(
63
77
  get('shipping_address')
64
78
  )
79
+ @shipping_phone = Minfraud::Model::Phone.new(get('shipping_phone'))
65
80
  end
66
81
  end
67
82
  end
@@ -24,7 +24,7 @@ module Minfraud
24
24
  # @!visibility private
25
25
  def initialize(record, locales)
26
26
  if record
27
- super(record, locales)
27
+ super
28
28
  else
29
29
  super({}, locales)
30
30
  end
@@ -38,7 +38,7 @@ module Minfraud
38
38
 
39
39
  # @!visibility private
40
40
  def initialize(record)
41
- super(record)
41
+ super
42
42
 
43
43
  @code = get('code')
44
44
  @reason = get('reason')
@@ -37,7 +37,7 @@ module Minfraud
37
37
 
38
38
  # @!visibility private
39
39
  def initialize(record)
40
- super(record)
40
+ super
41
41
 
42
42
  @name = get('name')
43
43
  @phone_number = get('phone_number')
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minfraud/model/abstract'
4
+
5
+ module Minfraud
6
+ module Model
7
+ # Model with information about the billing or shipping phone number.
8
+ class Phone < Abstract
9
+ # The two-character ISO 3166-1 country code for the country associated
10
+ # with the phone number.
11
+ #
12
+ # @return [String, nil]
13
+ attr_reader :country
14
+
15
+ # This is true if the phone number is a Voice over Internet Protocol
16
+ # (VoIP) number allocated by a regulator. It is false if the phone
17
+ # number is not a VoIP number allocated by a regulator. The attribute
18
+ # is nil when a valid phone number has not been provided or we do not
19
+ # have data for the phone number.
20
+ #
21
+ # @return [Boolean, nil]
22
+ attr_reader :is_voip
23
+
24
+ # The name of the original network operator associated with the phone
25
+ # number. This attribute does not reflect phone numbers that have been
26
+ # ported from the original operator to another, nor does it identify
27
+ # mobile virtual network operators.
28
+ #
29
+ # @return [String, nil]
30
+ attr_reader :network_operator
31
+
32
+ # One of the following values: fixed or mobile. Additional values may
33
+ # be added in the future.
34
+ #
35
+ # @return [String, nil]
36
+ attr_reader :number_type
37
+
38
+ # @!visibility private
39
+ def initialize(record)
40
+ super
41
+
42
+ @country = get('country')
43
+ @is_voip = get('is_voip')
44
+ @network_operator = get('network_operator')
45
+ @number_type = get('number_type')
46
+ end
47
+ end
48
+ end
49
+ 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
@@ -14,7 +14,7 @@ module Minfraud
14
14
 
15
15
  # @!visibility private
16
16
  def initialize(record)
17
- super(record)
17
+ super
18
18
 
19
19
  @risk = get('risk')
20
20
  end
@@ -20,7 +20,7 @@ module Minfraud
20
20
 
21
21
  # @!visibility private
22
22
  def initialize(record)
23
- super(record)
23
+ super
24
24
 
25
25
  @distance_to_billing_address = get('distance_to_billing_address')
26
26
  @is_high_risk = get('is_high_risk')
@@ -126,7 +126,7 @@ module Minfraud
126
126
 
127
127
  # @!visibility private
128
128
  def initialize(record)
129
- super(record)
129
+ super
130
130
 
131
131
  @avs_result = get('avs_result')
132
132
  @billing_address = get('billing_address')
@@ -52,7 +52,7 @@ module Minfraud
52
52
 
53
53
  # @!visibility private
54
54
  def initialize(record)
55
- super(record)
55
+ super
56
56
 
57
57
  @code = get('code')
58
58
  @warning = get('warning')
@@ -24,6 +24,19 @@ module Minfraud
24
24
  end
25
25
  end
26
26
 
27
+ def validate_uuid(field, value)
28
+ return if !value
29
+
30
+ stripped_value = value.to_s.gsub('-', '')
31
+
32
+ # Define a regex pattern for a valid UUID without dashes
33
+ uuid_regex = /\A[0-9a-f]{32}\z/i
34
+
35
+ unless uuid_regex.match(stripped_value)
36
+ raise InvalidInputError, "The #{field} value is not valid. It must be a UUID string."
37
+ end
38
+ end
39
+
27
40
  def validate_subdivision_code(field, value)
28
41
  return if !value
29
42
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Minfraud
4
4
  # The Gem version.
5
- VERSION = '2.5.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.5.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-04-16 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
@@ -203,6 +203,9 @@ files:
203
203
  - lib/minfraud/model/ip_address.rb
204
204
  - lib/minfraud/model/ip_risk_reason.rb
205
205
  - lib/minfraud/model/issuer.rb
206
+ - lib/minfraud/model/phone.rb
207
+ - lib/minfraud/model/reason.rb
208
+ - lib/minfraud/model/risk_score_reason.rb
206
209
  - lib/minfraud/model/score.rb
207
210
  - lib/minfraud/model/score_ip_address.rb
208
211
  - lib/minfraud/model/shipping_address.rb
@@ -233,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
233
236
  - !ruby/object:Gem::Version
234
237
  version: '0'
235
238
  requirements: []
236
- rubygems_version: 3.5.3
239
+ rubygems_version: 3.5.16
237
240
  signing_key:
238
241
  specification_version: 4
239
242
  summary: Ruby API for the minFraud Score, Insights, Factors, and Report Transactions