lithic 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -123,6 +123,27 @@ module Lithic
123
123
  )
124
124
  end
125
125
 
126
+ # Returns behavioral feature state derived from an account's transaction history.
127
+ #
128
+ # These signals expose the same data used by behavioral rule attributes (e.g.
129
+ # `AMOUNT_Z_SCORE` with `scope: ACCOUNT`, `IS_NEW_COUNTRY` with `scope: ACCOUNT`)
130
+ # and custom code `TRANSACTION_HISTORY_SIGNALS` features, allowing clients to
131
+ # inspect feature values before writing rules and debug rule behavior.
132
+ #
133
+ # Note: 3DS fields are not available at the account scope and will be null.
134
+ sig do
135
+ params(
136
+ account_token: String,
137
+ request_options: Lithic::RequestOptions::OrHash
138
+ ).returns(Lithic::SignalsResponse)
139
+ end
140
+ def retrieve_signals(
141
+ # The token of the account to fetch signals for.
142
+ account_token,
143
+ request_options: {}
144
+ )
145
+ end
146
+
126
147
  # Get an Account's available spend limits, which is based on the spend limit
127
148
  # configured on the Account and the amount already spent over the spend limit's
128
149
  # duration. For example, if the Account has a daily spend limit of $1000
@@ -590,6 +590,25 @@ module Lithic
590
590
  )
591
591
  end
592
592
 
593
+ # Returns behavioral feature state derived from a card's transaction history.
594
+ #
595
+ # These signals expose the same data used by behavioral rule attributes (e.g.
596
+ # `AMOUNT_Z_SCORE` with `scope: CARD`, `IS_NEW_COUNTRY` with `scope: CARD`) and
597
+ # custom code `TRANSACTION_HISTORY_SIGNALS` features, allowing clients to inspect
598
+ # feature values before writing rules and debug rule behavior.
599
+ sig do
600
+ params(
601
+ card_token: String,
602
+ request_options: Lithic::RequestOptions::OrHash
603
+ ).returns(Lithic::SignalsResponse)
604
+ end
605
+ def retrieve_signals(
606
+ # The token of the card to fetch signals for.
607
+ card_token,
608
+ request_options: {}
609
+ )
610
+ end
611
+
593
612
  # Get a Card's available spend limit, which is based on the spend limit configured
594
613
  # on the Card and the amount already spent over the spend limit's duration. For
595
614
  # example, if the Card has a monthly spend limit of $1000 configured, and has
@@ -0,0 +1,23 @@
1
+ module Lithic
2
+ module Models
3
+ type account_retrieve_signals_params =
4
+ { account_token: String } & Lithic::Internal::Type::request_parameters
5
+
6
+ class AccountRetrieveSignalsParams < Lithic::Internal::Type::BaseModel
7
+ extend Lithic::Internal::Type::RequestParameters::Converter
8
+ include Lithic::Internal::Type::RequestParameters
9
+
10
+ attr_accessor account_token: String
11
+
12
+ def initialize: (
13
+ account_token: String,
14
+ ?request_options: Lithic::request_opts
15
+ ) -> void
16
+
17
+ def to_hash: -> {
18
+ account_token: String,
19
+ request_options: Lithic::RequestOptions
20
+ }
21
+ end
22
+ end
23
+ end
@@ -106,6 +106,8 @@ module Lithic
106
106
  | :DISTINCT_COUNTRY_COUNT
107
107
  | :IS_NEW_MERCHANT
108
108
  | :THREE_DS_SUCCESS_RATE
109
+ | :TRAVEL_SPEED
110
+ | :DISTANCE_FROM_LAST_TRANSACTION
109
111
 
110
112
  module Attribute
111
113
  extend Lithic::Internal::Type::Enum
@@ -147,6 +149,8 @@ module Lithic
147
149
  DISTINCT_COUNTRY_COUNT: :DISTINCT_COUNTRY_COUNT
148
150
  IS_NEW_MERCHANT: :IS_NEW_MERCHANT
149
151
  THREE_DS_SUCCESS_RATE: :THREE_DS_SUCCESS_RATE
152
+ TRAVEL_SPEED: :TRAVEL_SPEED
153
+ DISTANCE_FROM_LAST_TRANSACTION: :DISTANCE_FROM_LAST_TRANSACTION
150
154
 
151
155
  def self?.values: -> ::Array[Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::attribute]
152
156
  end
@@ -154,7 +158,8 @@ module Lithic
154
158
  type parameters =
155
159
  {
156
160
  interval: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::interval,
157
- scope: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope
161
+ scope: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope,
162
+ unit: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::unit
158
163
  }
159
164
 
160
165
  class Parameters < Lithic::Internal::Type::BaseModel
@@ -170,14 +175,22 @@ module Lithic
170
175
  Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope
171
176
  ) -> Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope
172
177
 
178
+ attr_reader unit: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::unit?
179
+
180
+ def unit=: (
181
+ Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::unit
182
+ ) -> Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::unit
183
+
173
184
  def initialize: (
174
185
  ?interval: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::interval,
175
- ?scope: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope
186
+ ?scope: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope,
187
+ ?unit: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::unit
176
188
  ) -> void
177
189
 
178
190
  def to_hash: -> {
179
191
  interval: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::interval,
180
- scope: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope
192
+ scope: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope,
193
+ unit: Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::unit
181
194
  }
182
195
 
183
196
  type interval = :LIFETIME | :"7D" | :"30D" | :"90D"
@@ -204,6 +217,19 @@ module Lithic
204
217
 
205
218
  def self?.values: -> ::Array[Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::scope]
206
219
  end
220
+
221
+ type unit = :MPH | :KPH | :MILES | :KILOMETERS
222
+
223
+ module Unit
224
+ extend Lithic::Internal::Type::Enum
225
+
226
+ MPH: :MPH
227
+ KPH: :KPH
228
+ MILES: :MILES
229
+ KILOMETERS: :KILOMETERS
230
+
231
+ def self?.values: -> ::Array[Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::Parameters::unit]
232
+ end
207
233
  end
208
234
  end
209
235
  end
@@ -0,0 +1,23 @@
1
+ module Lithic
2
+ module Models
3
+ type card_retrieve_signals_params =
4
+ { card_token: String } & Lithic::Internal::Type::request_parameters
5
+
6
+ class CardRetrieveSignalsParams < Lithic::Internal::Type::BaseModel
7
+ extend Lithic::Internal::Type::RequestParameters::Converter
8
+ include Lithic::Internal::Type::RequestParameters
9
+
10
+ attr_accessor card_token: String
11
+
12
+ def initialize: (
13
+ card_token: String,
14
+ ?request_options: Lithic::request_opts
15
+ ) -> void
16
+
17
+ def to_hash: -> {
18
+ card_token: String,
19
+ request_options: Lithic::RequestOptions
20
+ }
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,170 @@
1
+ module Lithic
2
+ module Models
3
+ type signals_response =
4
+ {
5
+ :approved_txn_amount_m2 => Float?,
6
+ :approved_txn_amount_m2_30d => Float?,
7
+ :approved_txn_amount_m2_7d => Float?,
8
+ :approved_txn_amount_m2_90d => Float?,
9
+ approved_txn_count: Integer?,
10
+ :approved_txn_count_30d => Integer?,
11
+ :approved_txn_count_7d => Integer?,
12
+ :approved_txn_count_90d => Integer?,
13
+ avg_transaction_amount: Float?,
14
+ :avg_transaction_amount_30d => Float?,
15
+ :avg_transaction_amount_7d => Float?,
16
+ :avg_transaction_amount_90d => Float?,
17
+ distinct_country_count: Integer?,
18
+ distinct_mcc_count: Integer?,
19
+ first_txn_at: Time?,
20
+ is_first_transaction: bool?,
21
+ last_cp_country: String?,
22
+ last_cp_postal_code: String?,
23
+ last_cp_timestamp: Time?,
24
+ last_txn_approved_at: Time?,
25
+ seen_countries: ::Array[String]?,
26
+ seen_mccs: ::Array[String]?,
27
+ seen_merchants: ::Array[String]?,
28
+ stdev_transaction_amount: Float?,
29
+ :stdev_transaction_amount_30d => Float?,
30
+ :stdev_transaction_amount_7d => Float?,
31
+ :stdev_transaction_amount_90d => Float?,
32
+ three_ds_success_count: Integer?,
33
+ three_ds_success_rate: Float?,
34
+ three_ds_total_count: Integer?,
35
+ time_since_last_transaction_days: Float?
36
+ }
37
+
38
+ class SignalsResponse < Lithic::Internal::Type::BaseModel
39
+ attr_accessor approved_txn_amount_m2: Float?
40
+
41
+ attr_accessor approved_txn_amount_m2_30d: Float?
42
+
43
+ attr_accessor approved_txn_amount_m2_7d: Float?
44
+
45
+ attr_accessor approved_txn_amount_m2_90d: Float?
46
+
47
+ attr_accessor approved_txn_count: Integer?
48
+
49
+ attr_accessor approved_txn_count_30d: Integer?
50
+
51
+ attr_accessor approved_txn_count_7d: Integer?
52
+
53
+ attr_accessor approved_txn_count_90d: Integer?
54
+
55
+ attr_accessor avg_transaction_amount: Float?
56
+
57
+ attr_accessor avg_transaction_amount_30d: Float?
58
+
59
+ attr_accessor avg_transaction_amount_7d: Float?
60
+
61
+ attr_accessor avg_transaction_amount_90d: Float?
62
+
63
+ attr_accessor distinct_country_count: Integer?
64
+
65
+ attr_accessor distinct_mcc_count: Integer?
66
+
67
+ attr_accessor first_txn_at: Time?
68
+
69
+ attr_accessor is_first_transaction: bool?
70
+
71
+ attr_accessor last_cp_country: String?
72
+
73
+ attr_accessor last_cp_postal_code: String?
74
+
75
+ attr_accessor last_cp_timestamp: Time?
76
+
77
+ attr_accessor last_txn_approved_at: Time?
78
+
79
+ attr_accessor seen_countries: ::Array[String]?
80
+
81
+ attr_accessor seen_mccs: ::Array[String]?
82
+
83
+ attr_accessor seen_merchants: ::Array[String]?
84
+
85
+ attr_accessor stdev_transaction_amount: Float?
86
+
87
+ attr_accessor stdev_transaction_amount_30d: Float?
88
+
89
+ attr_accessor stdev_transaction_amount_7d: Float?
90
+
91
+ attr_accessor stdev_transaction_amount_90d: Float?
92
+
93
+ attr_accessor three_ds_success_count: Integer?
94
+
95
+ attr_accessor three_ds_success_rate: Float?
96
+
97
+ attr_accessor three_ds_total_count: Integer?
98
+
99
+ attr_accessor time_since_last_transaction_days: Float?
100
+
101
+ def initialize: (
102
+ approved_txn_amount_m2: Float?,
103
+ approved_txn_amount_m2_30d: Float?,
104
+ approved_txn_amount_m2_7d: Float?,
105
+ approved_txn_amount_m2_90d: Float?,
106
+ approved_txn_count: Integer?,
107
+ approved_txn_count_30d: Integer?,
108
+ approved_txn_count_7d: Integer?,
109
+ approved_txn_count_90d: Integer?,
110
+ avg_transaction_amount: Float?,
111
+ avg_transaction_amount_30d: Float?,
112
+ avg_transaction_amount_7d: Float?,
113
+ avg_transaction_amount_90d: Float?,
114
+ distinct_country_count: Integer?,
115
+ distinct_mcc_count: Integer?,
116
+ first_txn_at: Time?,
117
+ is_first_transaction: bool?,
118
+ last_cp_country: String?,
119
+ last_cp_postal_code: String?,
120
+ last_cp_timestamp: Time?,
121
+ last_txn_approved_at: Time?,
122
+ seen_countries: ::Array[String]?,
123
+ seen_mccs: ::Array[String]?,
124
+ seen_merchants: ::Array[String]?,
125
+ stdev_transaction_amount: Float?,
126
+ stdev_transaction_amount_30d: Float?,
127
+ stdev_transaction_amount_7d: Float?,
128
+ stdev_transaction_amount_90d: Float?,
129
+ three_ds_success_count: Integer?,
130
+ three_ds_success_rate: Float?,
131
+ three_ds_total_count: Integer?,
132
+ time_since_last_transaction_days: Float?
133
+ ) -> void
134
+
135
+ def to_hash: -> {
136
+ :approved_txn_amount_m2 => Float?,
137
+ :approved_txn_amount_m2_30d => Float?,
138
+ :approved_txn_amount_m2_7d => Float?,
139
+ :approved_txn_amount_m2_90d => Float?,
140
+ approved_txn_count: Integer?,
141
+ :approved_txn_count_30d => Integer?,
142
+ :approved_txn_count_7d => Integer?,
143
+ :approved_txn_count_90d => Integer?,
144
+ avg_transaction_amount: Float?,
145
+ :avg_transaction_amount_30d => Float?,
146
+ :avg_transaction_amount_7d => Float?,
147
+ :avg_transaction_amount_90d => Float?,
148
+ distinct_country_count: Integer?,
149
+ distinct_mcc_count: Integer?,
150
+ first_txn_at: Time?,
151
+ is_first_transaction: bool?,
152
+ last_cp_country: String?,
153
+ last_cp_postal_code: String?,
154
+ last_cp_timestamp: Time?,
155
+ last_txn_approved_at: Time?,
156
+ seen_countries: ::Array[String]?,
157
+ seen_mccs: ::Array[String]?,
158
+ seen_merchants: ::Array[String]?,
159
+ stdev_transaction_amount: Float?,
160
+ :stdev_transaction_amount_30d => Float?,
161
+ :stdev_transaction_amount_7d => Float?,
162
+ :stdev_transaction_amount_90d => Float?,
163
+ three_ds_success_count: Integer?,
164
+ three_ds_success_rate: Float?,
165
+ three_ds_total_count: Integer?,
166
+ time_since_last_transaction_days: Float?
167
+ }
168
+ end
169
+ end
170
+ end
@@ -41,6 +41,8 @@ module Lithic
41
41
 
42
42
  class AccountRetrieveParams = Lithic::Models::AccountRetrieveParams
43
43
 
44
+ class AccountRetrieveSignalsParams = Lithic::Models::AccountRetrieveSignalsParams
45
+
44
46
  class AccountRetrieveSpendLimitsParams = Lithic::Models::AccountRetrieveSpendLimitsParams
45
47
 
46
48
  class AccountSpendLimits = Lithic::Models::AccountSpendLimits
@@ -133,6 +135,8 @@ module Lithic
133
135
 
134
136
  class CardRetrieveParams = Lithic::Models::CardRetrieveParams
135
137
 
138
+ class CardRetrieveSignalsParams = Lithic::Models::CardRetrieveSignalsParams
139
+
136
140
  class CardRetrieveSpendLimitsParams = Lithic::Models::CardRetrieveSpendLimitsParams
137
141
 
138
142
  module Cards = Lithic::Models::Cards
@@ -437,6 +441,8 @@ module Lithic
437
441
 
438
442
  class ShippingAddress = Lithic::Models::ShippingAddress
439
443
 
444
+ class SignalsResponse = Lithic::Models::SignalsResponse
445
+
440
446
  module SpendLimitDuration = Lithic::Models::SpendLimitDuration
441
447
 
442
448
  class StatementsCreatedWebhookEvent = Lithic::Models::StatementsCreatedWebhookEvent
@@ -27,6 +27,11 @@ module Lithic
27
27
  ?request_options: Lithic::request_opts
28
28
  ) -> Lithic::Internal::CursorPage[Lithic::Account]
29
29
 
30
+ def retrieve_signals: (
31
+ String account_token,
32
+ ?request_options: Lithic::request_opts
33
+ ) -> Lithic::SignalsResponse
34
+
30
35
  def retrieve_spend_limits: (
31
36
  String account_token,
32
37
  ?request_options: Lithic::request_opts
@@ -108,6 +108,11 @@ module Lithic
108
108
  ?request_options: Lithic::request_opts
109
109
  ) -> Lithic::Card
110
110
 
111
+ def retrieve_signals: (
112
+ String card_token,
113
+ ?request_options: Lithic::request_opts
114
+ ) -> Lithic::SignalsResponse
115
+
111
116
  def retrieve_spend_limits: (
112
117
  String card_token,
113
118
  ?request_options: Lithic::request_opts
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lithic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lithic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-05-07 00:00:00.000000000 Z
11
+ date: 2026-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cgi
@@ -101,6 +101,7 @@ files:
101
101
  - lib/lithic/models/account_holders/entity_delete_params.rb
102
102
  - lib/lithic/models/account_list_params.rb
103
103
  - lib/lithic/models/account_retrieve_params.rb
104
+ - lib/lithic/models/account_retrieve_signals_params.rb
104
105
  - lib/lithic/models/account_retrieve_spend_limits_params.rb
105
106
  - lib/lithic/models/account_spend_limits.rb
106
107
  - lib/lithic/models/account_update_params.rb
@@ -189,6 +190,7 @@ files:
189
190
  - lib/lithic/models/card_renew_params.rb
190
191
  - lib/lithic/models/card_renewed_webhook_event.rb
191
192
  - lib/lithic/models/card_retrieve_params.rb
193
+ - lib/lithic/models/card_retrieve_signals_params.rb
192
194
  - lib/lithic/models/card_retrieve_spend_limits_params.rb
193
195
  - lib/lithic/models/card_search_by_pan_params.rb
194
196
  - lib/lithic/models/card_shipped_webhook_event.rb
@@ -406,6 +408,7 @@ files:
406
408
  - lib/lithic/models/settlement_report_updated_webhook_event.rb
407
409
  - lib/lithic/models/settlement_summary_details.rb
408
410
  - lib/lithic/models/shipping_address.rb
411
+ - lib/lithic/models/signals_response.rb
409
412
  - lib/lithic/models/spend_limit_duration.rb
410
413
  - lib/lithic/models/statement_totals.rb
411
414
  - lib/lithic/models/statements_created_webhook_event.rb
@@ -592,6 +595,7 @@ files:
592
595
  - rbi/lithic/models/account_holders/entity_delete_params.rbi
593
596
  - rbi/lithic/models/account_list_params.rbi
594
597
  - rbi/lithic/models/account_retrieve_params.rbi
598
+ - rbi/lithic/models/account_retrieve_signals_params.rbi
595
599
  - rbi/lithic/models/account_retrieve_spend_limits_params.rbi
596
600
  - rbi/lithic/models/account_spend_limits.rbi
597
601
  - rbi/lithic/models/account_update_params.rbi
@@ -680,6 +684,7 @@ files:
680
684
  - rbi/lithic/models/card_renew_params.rbi
681
685
  - rbi/lithic/models/card_renewed_webhook_event.rbi
682
686
  - rbi/lithic/models/card_retrieve_params.rbi
687
+ - rbi/lithic/models/card_retrieve_signals_params.rbi
683
688
  - rbi/lithic/models/card_retrieve_spend_limits_params.rbi
684
689
  - rbi/lithic/models/card_search_by_pan_params.rbi
685
690
  - rbi/lithic/models/card_shipped_webhook_event.rbi
@@ -897,6 +902,7 @@ files:
897
902
  - rbi/lithic/models/settlement_report_updated_webhook_event.rbi
898
903
  - rbi/lithic/models/settlement_summary_details.rbi
899
904
  - rbi/lithic/models/shipping_address.rbi
905
+ - rbi/lithic/models/signals_response.rbi
900
906
  - rbi/lithic/models/spend_limit_duration.rbi
901
907
  - rbi/lithic/models/statement_totals.rbi
902
908
  - rbi/lithic/models/statements_created_webhook_event.rbi
@@ -1082,6 +1088,7 @@ files:
1082
1088
  - sig/lithic/models/account_holders/entity_delete_params.rbs
1083
1089
  - sig/lithic/models/account_list_params.rbs
1084
1090
  - sig/lithic/models/account_retrieve_params.rbs
1091
+ - sig/lithic/models/account_retrieve_signals_params.rbs
1085
1092
  - sig/lithic/models/account_retrieve_spend_limits_params.rbs
1086
1093
  - sig/lithic/models/account_spend_limits.rbs
1087
1094
  - sig/lithic/models/account_update_params.rbs
@@ -1170,6 +1177,7 @@ files:
1170
1177
  - sig/lithic/models/card_renew_params.rbs
1171
1178
  - sig/lithic/models/card_renewed_webhook_event.rbs
1172
1179
  - sig/lithic/models/card_retrieve_params.rbs
1180
+ - sig/lithic/models/card_retrieve_signals_params.rbs
1173
1181
  - sig/lithic/models/card_retrieve_spend_limits_params.rbs
1174
1182
  - sig/lithic/models/card_search_by_pan_params.rbs
1175
1183
  - sig/lithic/models/card_shipped_webhook_event.rbs
@@ -1387,6 +1395,7 @@ files:
1387
1395
  - sig/lithic/models/settlement_report_updated_webhook_event.rbs
1388
1396
  - sig/lithic/models/settlement_summary_details.rbs
1389
1397
  - sig/lithic/models/shipping_address.rbs
1398
+ - sig/lithic/models/signals_response.rbs
1390
1399
  - sig/lithic/models/spend_limit_duration.rbs
1391
1400
  - sig/lithic/models/statement_totals.rbs
1392
1401
  - sig/lithic/models/statements_created_webhook_event.rbs