lithic 0.9.0 → 0.10.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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/README.md +1 -1
  4. data/lib/lithic/models/account_holder_create_params.rb +2 -1
  5. data/lib/lithic/models/account_holder_update_params.rb +2 -1
  6. data/lib/lithic/models/account_holder_updated_webhook_event.rb +2 -1
  7. data/lib/lithic/models/auth_rules/conditional_authorization_action_parameters.rb +26 -0
  8. data/lib/lithic/models/auth_rules/rule_feature.rb +1 -1
  9. data/lib/lithic/models/card_authorization_approval_request_webhook_event.rb +95 -4
  10. data/lib/lithic/models/carrier.rb +7 -2
  11. data/lib/lithic/models/kyb.rb +2 -1
  12. data/lib/lithic/models/parsed_webhook_event.rb +2 -1
  13. data/lib/lithic/models/payment.rb +14 -1
  14. data/lib/lithic/models/transaction.rb +93 -4
  15. data/lib/lithic/version.rb +1 -1
  16. data/lib/lithic.rb +1 -1
  17. data/rbi/lithic/models/account_holder_create_params.rbi +4 -2
  18. data/rbi/lithic/models/account_holder_update_params.rbi +4 -2
  19. data/rbi/lithic/models/account_holder_updated_webhook_event.rbi +4 -2
  20. data/rbi/lithic/models/auth_rules/conditional_authorization_action_parameters.rbi +53 -0
  21. data/rbi/lithic/models/auth_rules/rule_feature.rbi +1 -1
  22. data/rbi/lithic/models/card_authorization_approval_request_webhook_event.rbi +171 -4
  23. data/rbi/lithic/models/carrier.rbi +6 -2
  24. data/rbi/lithic/models/kyb.rbi +4 -2
  25. data/rbi/lithic/models/parsed_webhook_event.rbi +4 -2
  26. data/rbi/lithic/models/payment.rbi +10 -0
  27. data/rbi/lithic/models/transaction.rbi +146 -4
  28. data/sig/lithic/models/auth_rules/conditional_authorization_action_parameters.rbs +8 -0
  29. data/sig/lithic/models/card_authorization_approval_request_webhook_event.rbs +75 -4
  30. data/sig/lithic/models/payment.rbs +5 -0
  31. data/sig/lithic/models/transaction.rbs +75 -4
  32. metadata +2 -2
@@ -159,6 +159,17 @@ module Lithic
159
159
  # - `ADDRESS_MATCH`: Lithic's evaluation result comparing transaction's address
160
160
  # data with the cardholder KYC data if it exists. Valid values are `MATCH`,
161
161
  # `MATCH_ADDRESS_ONLY`, `MATCH_ZIP_ONLY`,`MISMATCH`,`NOT_PRESENT`.
162
+ # - `SERVICE_LOCATION_STATE`: The state/province code (ISO 3166-2) where the
163
+ # cardholder received the service, e.g. "NY". When a service location is present
164
+ # in the network data, the service location state is used. Otherwise, falls back
165
+ # to the card acceptor state.
166
+ # - `SERVICE_LOCATION_POSTAL_CODE`: The postal code where the cardholder received
167
+ # the service, e.g. "10001". When a service location is present in the network
168
+ # data, the service location postal code is used. Otherwise, falls back to the
169
+ # card acceptor postal code.
170
+ # - `CARD_AGE`: The age of the card in seconds at the time of the authorization.
171
+ # - `ACCOUNT_AGE`: The age of the account holder's account in seconds at the time
172
+ # of the authorization.
162
173
  sig do
163
174
  returns(
164
175
  Lithic::AuthRules::ConditionalAuthorizationActionParameters::Condition::Attribute::OrSymbol
@@ -237,6 +248,17 @@ module Lithic
237
248
  # - `ADDRESS_MATCH`: Lithic's evaluation result comparing transaction's address
238
249
  # data with the cardholder KYC data if it exists. Valid values are `MATCH`,
239
250
  # `MATCH_ADDRESS_ONLY`, `MATCH_ZIP_ONLY`,`MISMATCH`,`NOT_PRESENT`.
251
+ # - `SERVICE_LOCATION_STATE`: The state/province code (ISO 3166-2) where the
252
+ # cardholder received the service, e.g. "NY". When a service location is present
253
+ # in the network data, the service location state is used. Otherwise, falls back
254
+ # to the card acceptor state.
255
+ # - `SERVICE_LOCATION_POSTAL_CODE`: The postal code where the cardholder received
256
+ # the service, e.g. "10001". When a service location is present in the network
257
+ # data, the service location postal code is used. Otherwise, falls back to the
258
+ # card acceptor postal code.
259
+ # - `CARD_AGE`: The age of the card in seconds at the time of the authorization.
260
+ # - `ACCOUNT_AGE`: The age of the account holder's account in seconds at the time
261
+ # of the authorization.
240
262
  attribute:,
241
263
  # The operation to apply to the attribute
242
264
  operation:,
@@ -312,6 +334,17 @@ module Lithic
312
334
  # - `ADDRESS_MATCH`: Lithic's evaluation result comparing transaction's address
313
335
  # data with the cardholder KYC data if it exists. Valid values are `MATCH`,
314
336
  # `MATCH_ADDRESS_ONLY`, `MATCH_ZIP_ONLY`,`MISMATCH`,`NOT_PRESENT`.
337
+ # - `SERVICE_LOCATION_STATE`: The state/province code (ISO 3166-2) where the
338
+ # cardholder received the service, e.g. "NY". When a service location is present
339
+ # in the network data, the service location state is used. Otherwise, falls back
340
+ # to the card acceptor state.
341
+ # - `SERVICE_LOCATION_POSTAL_CODE`: The postal code where the cardholder received
342
+ # the service, e.g. "10001". When a service location is present in the network
343
+ # data, the service location postal code is used. Otherwise, falls back to the
344
+ # card acceptor postal code.
345
+ # - `CARD_AGE`: The age of the card in seconds at the time of the authorization.
346
+ # - `ACCOUNT_AGE`: The age of the account holder's account in seconds at the time
347
+ # of the authorization.
315
348
  module Attribute
316
349
  extend Lithic::Internal::Type::Enum
317
350
 
@@ -419,6 +452,26 @@ module Lithic
419
452
  :ADDRESS_MATCH,
420
453
  Lithic::AuthRules::ConditionalAuthorizationActionParameters::Condition::Attribute::TaggedSymbol
421
454
  )
455
+ SERVICE_LOCATION_STATE =
456
+ T.let(
457
+ :SERVICE_LOCATION_STATE,
458
+ Lithic::AuthRules::ConditionalAuthorizationActionParameters::Condition::Attribute::TaggedSymbol
459
+ )
460
+ SERVICE_LOCATION_POSTAL_CODE =
461
+ T.let(
462
+ :SERVICE_LOCATION_POSTAL_CODE,
463
+ Lithic::AuthRules::ConditionalAuthorizationActionParameters::Condition::Attribute::TaggedSymbol
464
+ )
465
+ CARD_AGE =
466
+ T.let(
467
+ :CARD_AGE,
468
+ Lithic::AuthRules::ConditionalAuthorizationActionParameters::Condition::Attribute::TaggedSymbol
469
+ )
470
+ ACCOUNT_AGE =
471
+ T.let(
472
+ :ACCOUNT_AGE,
473
+ Lithic::AuthRules::ConditionalAuthorizationActionParameters::Condition::Attribute::TaggedSymbol
474
+ )
422
475
 
423
476
  sig do
424
477
  override.returns(
@@ -18,7 +18,7 @@ module Lithic
18
18
  # - `CARD`: The card associated with the event. Available for AUTHORIZATION and
19
19
  # THREE_DS_AUTHENTICATION event stream rules.
20
20
  # - `ACCOUNT_HOLDER`: The account holder associated with the card. Available for
21
- # THREE_DS_AUTHENTICATION event stream rules.
21
+ # AUTHORIZATION and THREE_DS_AUTHENTICATION event stream rules.
22
22
  # - `IP_METADATA`: IP address metadata for the request. Available for
23
23
  # THREE_DS_AUTHENTICATION event stream rules.
24
24
  # - `SPEND_VELOCITY`: Spend velocity data for the card or account. Requires
@@ -96,10 +96,18 @@ module Lithic
96
96
  sig { returns(Symbol) }
97
97
  attr_accessor :event_type
98
98
 
99
- sig { returns(Lithic::Merchant) }
99
+ # Merchant information including full location details.
100
+ sig do
101
+ returns(Lithic::CardAuthorizationApprovalRequestWebhookEvent::Merchant)
102
+ end
100
103
  attr_reader :merchant
101
104
 
102
- sig { params(merchant: Lithic::Merchant::OrHash).void }
105
+ sig do
106
+ params(
107
+ merchant:
108
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::Merchant::OrHash
109
+ ).void
110
+ end
103
111
  attr_writer :merchant
104
112
 
105
113
  # Deprecated, use `amounts`. The amount that the merchant will receive,
@@ -114,6 +122,28 @@ module Lithic
114
122
  sig { returns(String) }
115
123
  attr_accessor :merchant_currency
116
124
 
125
+ # Where the cardholder received the service, when different from the card acceptor
126
+ # location. This is populated from network data elements such as Mastercard DE-122
127
+ # SE1 SF9-14 and Visa F34 DS02.
128
+ sig do
129
+ returns(
130
+ T.nilable(
131
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::ServiceLocation
132
+ )
133
+ )
134
+ end
135
+ attr_reader :service_location
136
+
137
+ sig do
138
+ params(
139
+ service_location:
140
+ T.nilable(
141
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::ServiceLocation::OrHash
142
+ )
143
+ ).void
144
+ end
145
+ attr_writer :service_location
146
+
117
147
  # Deprecated, use `amounts`. Amount (in cents) of the transaction that has been
118
148
  # settled, including any acquirer fees.
119
149
  sig { returns(Integer) }
@@ -323,9 +353,14 @@ module Lithic
323
353
  cardholder_currency: String,
324
354
  cash_amount: Integer,
325
355
  created: Time,
326
- merchant: Lithic::Merchant::OrHash,
356
+ merchant:
357
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::Merchant::OrHash,
327
358
  merchant_amount: Integer,
328
359
  merchant_currency: String,
360
+ service_location:
361
+ T.nilable(
362
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::ServiceLocation::OrHash
363
+ ),
329
364
  settled_amount: Integer,
330
365
  status:
331
366
  Lithic::CardAuthorizationApprovalRequestWebhookEvent::Status::OrSymbol,
@@ -393,6 +428,7 @@ module Lithic
393
428
  cash_amount:,
394
429
  # Date and time when the transaction first occurred in UTC.
395
430
  created:,
431
+ # Merchant information including full location details.
396
432
  merchant:,
397
433
  # Deprecated, use `amounts`. The amount that the merchant will receive,
398
434
  # denominated in `merchant_currency` and in the smallest currency unit. Note the
@@ -402,6 +438,10 @@ module Lithic
402
438
  merchant_amount:,
403
439
  # 3-character alphabetic ISO 4217 code for the local currency of the transaction.
404
440
  merchant_currency:,
441
+ # Where the cardholder received the service, when different from the card acceptor
442
+ # location. This is populated from network data elements such as Mastercard DE-122
443
+ # SE1 SF9-14 and Visa F34 DS02.
444
+ service_location:,
405
445
  # Deprecated, use `amounts`. Amount (in cents) of the transaction that has been
406
446
  # settled, including any acquirer fees.
407
447
  settled_amount:,
@@ -468,9 +508,14 @@ module Lithic
468
508
  cash_amount: Integer,
469
509
  created: Time,
470
510
  event_type: Symbol,
471
- merchant: Lithic::Merchant,
511
+ merchant:
512
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::Merchant,
472
513
  merchant_amount: Integer,
473
514
  merchant_currency: String,
515
+ service_location:
516
+ T.nilable(
517
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::ServiceLocation
518
+ ),
474
519
  settled_amount: Integer,
475
520
  status:
476
521
  Lithic::CardAuthorizationApprovalRequestWebhookEvent::Status::TaggedSymbol,
@@ -1210,6 +1255,128 @@ module Lithic
1210
1255
  end
1211
1256
  end
1212
1257
 
1258
+ class Merchant < Lithic::Models::Merchant
1259
+ OrHash =
1260
+ T.type_alias do
1261
+ T.any(
1262
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::Merchant,
1263
+ Lithic::Internal::AnyHash
1264
+ )
1265
+ end
1266
+
1267
+ # Phone number of card acceptor.
1268
+ sig { returns(T.nilable(String)) }
1269
+ attr_accessor :phone_number
1270
+
1271
+ # Postal code of card acceptor.
1272
+ sig { returns(T.nilable(String)) }
1273
+ attr_accessor :postal_code
1274
+
1275
+ # Street address of card acceptor.
1276
+ sig { returns(T.nilable(String)) }
1277
+ attr_accessor :street_address
1278
+
1279
+ # Merchant information including full location details.
1280
+ sig do
1281
+ params(
1282
+ phone_number: T.nilable(String),
1283
+ postal_code: T.nilable(String),
1284
+ street_address: T.nilable(String)
1285
+ ).returns(T.attached_class)
1286
+ end
1287
+ def self.new(
1288
+ # Phone number of card acceptor.
1289
+ phone_number:,
1290
+ # Postal code of card acceptor.
1291
+ postal_code:,
1292
+ # Street address of card acceptor.
1293
+ street_address:
1294
+ )
1295
+ end
1296
+
1297
+ sig do
1298
+ override.returns(
1299
+ {
1300
+ phone_number: T.nilable(String),
1301
+ postal_code: T.nilable(String),
1302
+ street_address: T.nilable(String)
1303
+ }
1304
+ )
1305
+ end
1306
+ def to_hash
1307
+ end
1308
+ end
1309
+
1310
+ class ServiceLocation < Lithic::Internal::Type::BaseModel
1311
+ OrHash =
1312
+ T.type_alias do
1313
+ T.any(
1314
+ Lithic::CardAuthorizationApprovalRequestWebhookEvent::ServiceLocation,
1315
+ Lithic::Internal::AnyHash
1316
+ )
1317
+ end
1318
+
1319
+ # City of service location.
1320
+ sig { returns(T.nilable(String)) }
1321
+ attr_accessor :city
1322
+
1323
+ # Country code of service location, ISO 3166-1 alpha-3.
1324
+ sig { returns(T.nilable(String)) }
1325
+ attr_accessor :country
1326
+
1327
+ # Postal code of service location.
1328
+ sig { returns(T.nilable(String)) }
1329
+ attr_accessor :postal_code
1330
+
1331
+ # State/province code of service location, ISO 3166-2.
1332
+ sig { returns(T.nilable(String)) }
1333
+ attr_accessor :state
1334
+
1335
+ # Street address of service location.
1336
+ sig { returns(T.nilable(String)) }
1337
+ attr_accessor :street_address
1338
+
1339
+ # Where the cardholder received the service, when different from the card acceptor
1340
+ # location. This is populated from network data elements such as Mastercard DE-122
1341
+ # SE1 SF9-14 and Visa F34 DS02.
1342
+ sig do
1343
+ params(
1344
+ city: T.nilable(String),
1345
+ country: T.nilable(String),
1346
+ postal_code: T.nilable(String),
1347
+ state: T.nilable(String),
1348
+ street_address: T.nilable(String)
1349
+ ).returns(T.attached_class)
1350
+ end
1351
+ def self.new(
1352
+ # City of service location.
1353
+ city:,
1354
+ # Country code of service location, ISO 3166-1 alpha-3.
1355
+ country:,
1356
+ # Postal code of service location.
1357
+ postal_code:,
1358
+ # State/province code of service location, ISO 3166-2.
1359
+ state:,
1360
+ # Street address of service location.
1361
+ street_address:
1362
+ )
1363
+ end
1364
+
1365
+ sig do
1366
+ override.returns(
1367
+ {
1368
+ city: T.nilable(String),
1369
+ country: T.nilable(String),
1370
+ postal_code: T.nilable(String),
1371
+ state: T.nilable(String),
1372
+ street_address: T.nilable(String)
1373
+ }
1374
+ )
1375
+ end
1376
+ def to_hash
1377
+ end
1378
+ end
1379
+
1213
1380
  # The type of authorization request that this request is for. Note that
1214
1381
  # `CREDIT_AUTHORIZATION` and `FINANCIAL_CREDIT_AUTHORIZATION` is only available to
1215
1382
  # users with credit decisioning via ASA enabled.
@@ -6,7 +6,9 @@ module Lithic
6
6
  OrHash =
7
7
  T.type_alias { T.any(Lithic::Carrier, Lithic::Internal::AnyHash) }
8
8
 
9
- # QR code url to display on the card carrier
9
+ # QR code URL to display on the card carrier. The `qr_code_url` field requires
10
+ # your domain to be allowlisted by Lithic before use. Contact Support to configure
11
+ # your QR code domain
10
12
  sig { returns(T.nilable(String)) }
11
13
  attr_reader :qr_code_url
12
14
 
@@ -15,7 +17,9 @@ module Lithic
15
17
 
16
18
  sig { params(qr_code_url: String).returns(T.attached_class) }
17
19
  def self.new(
18
- # QR code url to display on the card carrier
20
+ # QR code URL to display on the card carrier. The `qr_code_url` field requires
21
+ # your domain to be allowlisted by Lithic before use. Contact Support to configure
22
+ # your QR code domain
19
23
  qr_code_url: nil
20
24
  )
21
25
  end
@@ -37,7 +37,8 @@ module Lithic
37
37
  attr_writer :control_person
38
38
 
39
39
  # Short description of the company's line of business (i.e., what does the company
40
- # do?).
40
+ # do?). Values longer than 255 characters will be truncated before KYB
41
+ # verification
41
42
  sig { returns(String) }
42
43
  attr_accessor :nature_of_business
43
44
 
@@ -120,7 +121,8 @@ module Lithic
120
121
  # (Section II) for more background.
121
122
  control_person:,
122
123
  # Short description of the company's line of business (i.e., what does the company
123
- # do?).
124
+ # do?). Values longer than 255 characters will be truncated before KYB
125
+ # verification
124
126
  nature_of_business:,
125
127
  # An RFC 3339 timestamp indicating when the account holder accepted the applicable
126
128
  # legal agreements (e.g., cardholder terms) as agreed upon during API customer's
@@ -129,7 +129,8 @@ module Lithic
129
129
  attr_writer :naics_code
130
130
 
131
131
  # Short description of the company's line of business (i.e., what does the company
132
- # do?).
132
+ # do?). Values longer than 255 characters will be truncated before KYB
133
+ # verification
133
134
  sig { returns(T.nilable(String)) }
134
135
  attr_reader :nature_of_business
135
136
 
@@ -171,7 +172,8 @@ module Lithic
171
172
  # business. Only present if naics_code was included in the update request.
172
173
  naics_code: nil,
173
174
  # Short description of the company's line of business (i.e., what does the company
174
- # do?).
175
+ # do?). Values longer than 255 characters will be truncated before KYB
176
+ # verification
175
177
  nature_of_business: nil,
176
178
  # Company website URL.
177
179
  website_url: nil
@@ -818,6 +818,11 @@ module Lithic
818
818
  sig { returns(T.nilable(String)) }
819
819
  attr_accessor :company_id
820
820
 
821
+ # Value to override the configured company name with. Can only be used if allowed
822
+ # to override
823
+ sig { returns(T.nilable(String)) }
824
+ attr_accessor :override_company_name
825
+
821
826
  # Receipt routing number
822
827
  sig { returns(T.nilable(String)) }
823
828
  attr_accessor :receipt_routing_number
@@ -844,6 +849,7 @@ module Lithic
844
849
  ach_hold_period: T.nilable(Integer),
845
850
  addenda: T.nilable(String),
846
851
  company_id: T.nilable(String),
852
+ override_company_name: T.nilable(String),
847
853
  receipt_routing_number: T.nilable(String),
848
854
  retries: T.nilable(Integer),
849
855
  return_reason_code: T.nilable(String),
@@ -859,6 +865,9 @@ module Lithic
859
865
  addenda: nil,
860
866
  # Company ID for the ACH transaction
861
867
  company_id: nil,
868
+ # Value to override the configured company name with. Can only be used if allowed
869
+ # to override
870
+ override_company_name: nil,
862
871
  # Receipt routing number
863
872
  receipt_routing_number: nil,
864
873
  # Number of retries attempted
@@ -878,6 +887,7 @@ module Lithic
878
887
  ach_hold_period: T.nilable(Integer),
879
888
  addenda: T.nilable(String),
880
889
  company_id: T.nilable(String),
890
+ override_company_name: T.nilable(String),
881
891
  receipt_routing_number: T.nilable(String),
882
892
  retries: T.nilable(Integer),
883
893
  return_reason_code: T.nilable(String),
@@ -76,10 +76,11 @@ module Lithic
76
76
  sig { returns(T.nilable(String)) }
77
77
  attr_accessor :financial_account_token
78
78
 
79
- sig { returns(Lithic::Merchant) }
79
+ # Merchant information including full location details.
80
+ sig { returns(Lithic::Transaction::Merchant) }
80
81
  attr_reader :merchant
81
82
 
82
- sig { params(merchant: Lithic::Merchant::OrHash).void }
83
+ sig { params(merchant: Lithic::Transaction::Merchant::OrHash).void }
83
84
  attr_writer :merchant
84
85
 
85
86
  # Analogous to the 'amount', but in the merchant currency.
@@ -116,6 +117,20 @@ module Lithic
116
117
  sig { returns(Lithic::Transaction::Result::TaggedSymbol) }
117
118
  attr_accessor :result
118
119
 
120
+ # Where the cardholder received the service, when different from the card acceptor
121
+ # location. This is populated from network data elements such as Mastercard DE-122
122
+ # SE1 SF9-14 and Visa F34 DS02.
123
+ sig { returns(T.nilable(Lithic::Transaction::ServiceLocation)) }
124
+ attr_reader :service_location
125
+
126
+ sig do
127
+ params(
128
+ service_location:
129
+ T.nilable(Lithic::Transaction::ServiceLocation::OrHash)
130
+ ).void
131
+ end
132
+ attr_writer :service_location
133
+
119
134
  # The settled amount of the transaction in the settlement currency.
120
135
  sig { returns(Integer) }
121
136
  attr_accessor :settled_amount
@@ -161,7 +176,7 @@ module Lithic
161
176
  T.nilable(Lithic::CardholderAuthentication::OrHash),
162
177
  created: Time,
163
178
  financial_account_token: T.nilable(String),
164
- merchant: Lithic::Merchant::OrHash,
179
+ merchant: Lithic::Transaction::Merchant::OrHash,
165
180
  merchant_amount: T.nilable(Integer),
166
181
  merchant_authorization_amount: T.nilable(Integer),
167
182
  merchant_currency: String,
@@ -169,6 +184,8 @@ module Lithic
169
184
  network_risk_score: T.nilable(Integer),
170
185
  pos: Lithic::Transaction::Pos::OrHash,
171
186
  result: Lithic::Transaction::Result::OrSymbol,
187
+ service_location:
188
+ T.nilable(Lithic::Transaction::ServiceLocation::OrHash),
172
189
  settled_amount: Integer,
173
190
  status: Lithic::Transaction::Status::OrSymbol,
174
191
  tags: T::Hash[Symbol, String],
@@ -208,6 +225,7 @@ module Lithic
208
225
  # Date and time when the transaction first occurred. UTC time zone.
209
226
  created:,
210
227
  financial_account_token:,
228
+ # Merchant information including full location details.
211
229
  merchant:,
212
230
  # Analogous to the 'amount', but in the merchant currency.
213
231
  merchant_amount:,
@@ -226,6 +244,10 @@ module Lithic
226
244
  network_risk_score:,
227
245
  pos:,
228
246
  result:,
247
+ # Where the cardholder received the service, when different from the card acceptor
248
+ # location. This is populated from network data elements such as Mastercard DE-122
249
+ # SE1 SF9-14 and Visa F34 DS02.
250
+ service_location:,
229
251
  # The settled amount of the transaction in the settlement currency.
230
252
  settled_amount:,
231
253
  # Status of the transaction.
@@ -257,7 +279,7 @@ module Lithic
257
279
  T.nilable(Lithic::CardholderAuthentication),
258
280
  created: Time,
259
281
  financial_account_token: T.nilable(String),
260
- merchant: Lithic::Merchant,
282
+ merchant: Lithic::Transaction::Merchant,
261
283
  merchant_amount: T.nilable(Integer),
262
284
  merchant_authorization_amount: T.nilable(Integer),
263
285
  merchant_currency: String,
@@ -265,6 +287,7 @@ module Lithic
265
287
  network_risk_score: T.nilable(Integer),
266
288
  pos: Lithic::Transaction::Pos,
267
289
  result: Lithic::Transaction::Result::TaggedSymbol,
290
+ service_location: T.nilable(Lithic::Transaction::ServiceLocation),
268
291
  settled_amount: Integer,
269
292
  status: Lithic::Transaction::Status::TaggedSymbol,
270
293
  tags: T::Hash[Symbol, String],
@@ -522,6 +545,55 @@ module Lithic
522
545
  end
523
546
  end
524
547
 
548
+ class Merchant < Lithic::Models::Merchant
549
+ OrHash =
550
+ T.type_alias do
551
+ T.any(Lithic::Transaction::Merchant, Lithic::Internal::AnyHash)
552
+ end
553
+
554
+ # Phone number of card acceptor.
555
+ sig { returns(T.nilable(String)) }
556
+ attr_accessor :phone_number
557
+
558
+ # Postal code of card acceptor.
559
+ sig { returns(T.nilable(String)) }
560
+ attr_accessor :postal_code
561
+
562
+ # Street address of card acceptor.
563
+ sig { returns(T.nilable(String)) }
564
+ attr_accessor :street_address
565
+
566
+ # Merchant information including full location details.
567
+ sig do
568
+ params(
569
+ phone_number: T.nilable(String),
570
+ postal_code: T.nilable(String),
571
+ street_address: T.nilable(String)
572
+ ).returns(T.attached_class)
573
+ end
574
+ def self.new(
575
+ # Phone number of card acceptor.
576
+ phone_number:,
577
+ # Postal code of card acceptor.
578
+ postal_code:,
579
+ # Street address of card acceptor.
580
+ street_address:
581
+ )
582
+ end
583
+
584
+ sig do
585
+ override.returns(
586
+ {
587
+ phone_number: T.nilable(String),
588
+ postal_code: T.nilable(String),
589
+ street_address: T.nilable(String)
590
+ }
591
+ )
592
+ end
593
+ def to_hash
594
+ end
595
+ end
596
+
525
597
  # Card network of the authorization. Value is `UNKNOWN` when Lithic cannot
526
598
  # determine the network code from the upstream provider.
527
599
  module Network
@@ -1297,6 +1369,76 @@ module Lithic
1297
1369
  end
1298
1370
  end
1299
1371
 
1372
+ class ServiceLocation < Lithic::Internal::Type::BaseModel
1373
+ OrHash =
1374
+ T.type_alias do
1375
+ T.any(
1376
+ Lithic::Transaction::ServiceLocation,
1377
+ Lithic::Internal::AnyHash
1378
+ )
1379
+ end
1380
+
1381
+ # City of service location.
1382
+ sig { returns(T.nilable(String)) }
1383
+ attr_accessor :city
1384
+
1385
+ # Country code of service location, ISO 3166-1 alpha-3.
1386
+ sig { returns(T.nilable(String)) }
1387
+ attr_accessor :country
1388
+
1389
+ # Postal code of service location.
1390
+ sig { returns(T.nilable(String)) }
1391
+ attr_accessor :postal_code
1392
+
1393
+ # State/province code of service location, ISO 3166-2.
1394
+ sig { returns(T.nilable(String)) }
1395
+ attr_accessor :state
1396
+
1397
+ # Street address of service location.
1398
+ sig { returns(T.nilable(String)) }
1399
+ attr_accessor :street_address
1400
+
1401
+ # Where the cardholder received the service, when different from the card acceptor
1402
+ # location. This is populated from network data elements such as Mastercard DE-122
1403
+ # SE1 SF9-14 and Visa F34 DS02.
1404
+ sig do
1405
+ params(
1406
+ city: T.nilable(String),
1407
+ country: T.nilable(String),
1408
+ postal_code: T.nilable(String),
1409
+ state: T.nilable(String),
1410
+ street_address: T.nilable(String)
1411
+ ).returns(T.attached_class)
1412
+ end
1413
+ def self.new(
1414
+ # City of service location.
1415
+ city:,
1416
+ # Country code of service location, ISO 3166-1 alpha-3.
1417
+ country:,
1418
+ # Postal code of service location.
1419
+ postal_code:,
1420
+ # State/province code of service location, ISO 3166-2.
1421
+ state:,
1422
+ # Street address of service location.
1423
+ street_address:
1424
+ )
1425
+ end
1426
+
1427
+ sig do
1428
+ override.returns(
1429
+ {
1430
+ city: T.nilable(String),
1431
+ country: T.nilable(String),
1432
+ postal_code: T.nilable(String),
1433
+ state: T.nilable(String),
1434
+ street_address: T.nilable(String)
1435
+ }
1436
+ )
1437
+ end
1438
+ def to_hash
1439
+ end
1440
+ end
1441
+
1300
1442
  # Status of the transaction.
1301
1443
  module Status
1302
1444
  extend Lithic::Internal::Type::Enum
@@ -79,6 +79,10 @@ module Lithic
79
79
  | :WALLET_TYPE
80
80
  | :TRANSACTION_INITIATOR
81
81
  | :ADDRESS_MATCH
82
+ | :SERVICE_LOCATION_STATE
83
+ | :SERVICE_LOCATION_POSTAL_CODE
84
+ | :CARD_AGE
85
+ | :ACCOUNT_AGE
82
86
 
83
87
  module Attribute
84
88
  extend Lithic::Internal::Type::Enum
@@ -102,6 +106,10 @@ module Lithic
102
106
  WALLET_TYPE: :WALLET_TYPE
103
107
  TRANSACTION_INITIATOR: :TRANSACTION_INITIATOR
104
108
  ADDRESS_MATCH: :ADDRESS_MATCH
109
+ SERVICE_LOCATION_STATE: :SERVICE_LOCATION_STATE
110
+ SERVICE_LOCATION_POSTAL_CODE: :SERVICE_LOCATION_POSTAL_CODE
111
+ CARD_AGE: :CARD_AGE
112
+ ACCOUNT_AGE: :ACCOUNT_AGE
105
113
 
106
114
  def self?.values: -> ::Array[Lithic::Models::AuthRules::ConditionalAuthorizationActionParameters::Condition::attribute]
107
115
  end