lithic 0.5.0 → 0.6.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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/README.md +1 -1
  4. data/lib/lithic/models/account_holders/account_holder_entity.rb +183 -0
  5. data/lib/lithic/models/account_holders/entity_create_params.rb +159 -0
  6. data/lib/lithic/models/account_holders/entity_create_response.rb +113 -0
  7. data/lib/lithic/models/account_holders/entity_delete_params.rb +22 -0
  8. data/lib/lithic/models/auth_rules/auth_rule.rb +6 -2
  9. data/lib/lithic/models/auth_rules/conditional_block_parameters.rb +3 -0
  10. data/lib/lithic/models/auth_rules/v2_create_params.rb +5 -2
  11. data/lib/lithic/models/auth_rules/v2_draft_params.rb +1 -0
  12. data/lib/lithic/models/digital_wallet_tokenization_approval_request_webhook_event.rb +9 -9
  13. data/lib/lithic/models/financial_account.rb +1 -0
  14. data/lib/lithic/models/financial_account_update_status_params.rb +1 -0
  15. data/lib/lithic/models/financial_accounts/category_tier.rb +28 -0
  16. data/lib/lithic/models/financial_accounts/interest_tier_schedule.rb +50 -0
  17. data/lib/lithic/models/financial_accounts/interest_tier_schedule_create_params.rb +16 -0
  18. data/lib/lithic/models/financial_accounts/interest_tier_schedule_delete_params.rb +22 -0
  19. data/lib/lithic/models/financial_accounts/interest_tier_schedule_list_params.rb +40 -0
  20. data/lib/lithic/models/financial_accounts/interest_tier_schedule_retrieve_params.rb +22 -0
  21. data/lib/lithic/models/financial_accounts/interest_tier_schedule_update_params.rb +44 -0
  22. data/lib/lithic/models/financial_accounts/loan_tape.rb +1 -0
  23. data/lib/lithic/models/financial_accounts/loan_tape_configuration.rb +63 -0
  24. data/lib/lithic/models/financial_accounts/loan_tape_configuration_retrieve_params.rb +16 -0
  25. data/lib/lithic/models/financial_accounts/loan_tape_rebuild_configuration.rb +36 -0
  26. data/lib/lithic/models/financial_accounts/statement.rb +1 -0
  27. data/lib/lithic/models/{digital_wallet_token_metadata.rb → token_metadata.rb} +18 -19
  28. data/lib/lithic/models/tokenization_approval_request_webhook_event.rb +9 -9
  29. data/lib/lithic/models/tokenization_decisioning_request_webhook_event.rb +9 -9
  30. data/lib/lithic/models.rb +4 -2
  31. data/lib/lithic/resources/account_holders/entities.rb +89 -0
  32. data/lib/lithic/resources/account_holders.rb +4 -0
  33. data/lib/lithic/resources/financial_accounts/interest_tier_schedule.rb +205 -0
  34. data/lib/lithic/resources/financial_accounts/loan_tape_configuration.rb +36 -0
  35. data/lib/lithic/resources/financial_accounts.rb +9 -0
  36. data/lib/lithic/version.rb +1 -1
  37. data/lib/lithic.rb +18 -1
  38. data/rbi/lithic/models/account_holders/account_holder_entity.rbi +296 -0
  39. data/rbi/lithic/models/account_holders/entity_create_params.rbi +242 -0
  40. data/rbi/lithic/models/account_holders/entity_create_response.rbi +292 -0
  41. data/rbi/lithic/models/account_holders/entity_delete_params.rbi +43 -0
  42. data/rbi/lithic/models/auth_rules/auth_rule.rbi +6 -3
  43. data/rbi/lithic/models/auth_rules/conditional_block_parameters.rbi +1 -0
  44. data/rbi/lithic/models/auth_rules/v2_create_params.rbi +6 -3
  45. data/rbi/lithic/models/digital_wallet_tokenization_approval_request_webhook_event.rbi +15 -17
  46. data/rbi/lithic/models/financial_account.rbi +5 -0
  47. data/rbi/lithic/models/financial_account_update_status_params.rbi +5 -0
  48. data/rbi/lithic/models/financial_accounts/category_tier.rbi +45 -0
  49. data/rbi/lithic/models/financial_accounts/interest_tier_schedule.rbi +75 -0
  50. data/rbi/lithic/models/financial_accounts/interest_tier_schedule_create_params.rbi +32 -0
  51. data/rbi/lithic/models/financial_accounts/interest_tier_schedule_delete_params.rbi +43 -0
  52. data/rbi/lithic/models/financial_accounts/interest_tier_schedule_list_params.rbi +73 -0
  53. data/rbi/lithic/models/financial_accounts/interest_tier_schedule_retrieve_params.rbi +43 -0
  54. data/rbi/lithic/models/financial_accounts/interest_tier_schedule_update_params.rbi +70 -0
  55. data/rbi/lithic/models/financial_accounts/loan_tape.rbi +5 -0
  56. data/rbi/lithic/models/financial_accounts/loan_tape_configuration.rbi +99 -0
  57. data/rbi/lithic/models/financial_accounts/loan_tape_configuration_retrieve_params.rbi +32 -0
  58. data/rbi/lithic/models/financial_accounts/loan_tape_rebuild_configuration.rbi +65 -0
  59. data/rbi/lithic/models/financial_accounts/statement.rbi +5 -0
  60. data/rbi/lithic/models/{digital_wallet_token_metadata.rbi → token_metadata.rbi} +34 -41
  61. data/rbi/lithic/models/tokenization_approval_request_webhook_event.rbi +11 -17
  62. data/rbi/lithic/models/tokenization_decisioning_request_webhook_event.rbi +15 -17
  63. data/rbi/lithic/models.rbi +4 -2
  64. data/rbi/lithic/resources/account_holders/entities.rbi +80 -0
  65. data/rbi/lithic/resources/account_holders.rbi +3 -0
  66. data/rbi/lithic/resources/auth_rules/v2.rbi +2 -1
  67. data/rbi/lithic/resources/financial_accounts/interest_tier_schedule.rbi +156 -0
  68. data/rbi/lithic/resources/financial_accounts/loan_tape_configuration.rbi +30 -0
  69. data/rbi/lithic/resources/financial_accounts.rbi +10 -0
  70. data/sig/lithic/models/account_holders/account_holder_entity.rbs +137 -0
  71. data/sig/lithic/models/account_holders/entity_create_params.rbs +118 -0
  72. data/sig/lithic/models/account_holders/entity_create_response.rbs +117 -0
  73. data/sig/lithic/models/account_holders/entity_delete_params.rbs +26 -0
  74. data/sig/lithic/models/digital_wallet_tokenization_approval_request_webhook_event.rbs +5 -9
  75. data/sig/lithic/models/financial_account.rbs +2 -0
  76. data/sig/lithic/models/financial_account_update_status_params.rbs +2 -0
  77. data/sig/lithic/models/financial_accounts/category_tier.rbs +21 -0
  78. data/sig/lithic/models/financial_accounts/interest_tier_schedule.rbs +41 -0
  79. data/sig/lithic/models/financial_accounts/interest_tier_schedule_create_params.rbs +17 -0
  80. data/sig/lithic/models/financial_accounts/interest_tier_schedule_delete_params.rbs +26 -0
  81. data/sig/lithic/models/financial_accounts/interest_tier_schedule_list_params.rbs +40 -0
  82. data/sig/lithic/models/financial_accounts/interest_tier_schedule_retrieve_params.rbs +26 -0
  83. data/sig/lithic/models/financial_accounts/interest_tier_schedule_update_params.rbs +38 -0
  84. data/sig/lithic/models/financial_accounts/loan_tape.rbs +2 -0
  85. data/sig/lithic/models/financial_accounts/loan_tape_configuration.rbs +60 -0
  86. data/sig/lithic/models/financial_accounts/loan_tape_configuration_retrieve_params.rbs +17 -0
  87. data/sig/lithic/models/financial_accounts/loan_tape_rebuild_configuration.rbs +32 -0
  88. data/sig/lithic/models/financial_accounts/statement.rbs +2 -0
  89. data/sig/lithic/models/{digital_wallet_token_metadata.rbs → token_metadata.rbs} +19 -17
  90. data/sig/lithic/models/tokenization_approval_request_webhook_event.rbs +5 -9
  91. data/sig/lithic/models/tokenization_decisioning_request_webhook_event.rbs +5 -9
  92. data/sig/lithic/models.rbs +4 -2
  93. data/sig/lithic/resources/account_holders/entities.rbs +28 -0
  94. data/sig/lithic/resources/account_holders.rbs +2 -0
  95. data/sig/lithic/resources/financial_accounts/interest_tier_schedule.rbs +46 -0
  96. data/sig/lithic/resources/financial_accounts/loan_tape_configuration.rbs +14 -0
  97. data/sig/lithic/resources/financial_accounts.rbs +4 -0
  98. metadata +56 -5
@@ -60,6 +60,13 @@ module Lithic
60
60
  end
61
61
  attr_accessor :issuer_decision
62
62
 
63
+ # Contains the metadata for the digital wallet being tokenized.
64
+ sig { returns(Lithic::TokenMetadata) }
65
+ attr_reader :token_metadata
66
+
67
+ sig { params(token_metadata: Lithic::TokenMetadata::OrHash).void }
68
+ attr_writer :token_metadata
69
+
63
70
  # The channel through which the tokenization was made.
64
71
  sig do
65
72
  returns(
@@ -88,18 +95,6 @@ module Lithic
88
95
  sig { params(device: Lithic::Device::OrHash).void }
89
96
  attr_writer :device
90
97
 
91
- # Contains the metadata for the digital wallet being tokenized.
92
- sig { returns(T.nilable(Lithic::DigitalWalletTokenMetadata)) }
93
- attr_reader :digital_wallet_token_metadata
94
-
95
- sig do
96
- params(
97
- digital_wallet_token_metadata:
98
- Lithic::DigitalWalletTokenMetadata::OrHash
99
- ).void
100
- end
101
- attr_writer :digital_wallet_token_metadata
102
-
103
98
  # Results from rules that were evaluated for this tokenization
104
99
  sig { returns(T.nilable(T::Array[Lithic::TokenizationRuleResult])) }
105
100
  attr_reader :rule_results
@@ -174,13 +169,12 @@ module Lithic
174
169
  Lithic::TokenizationApprovalRequestWebhookEvent::EventType::OrSymbol,
175
170
  issuer_decision:
176
171
  Lithic::TokenizationApprovalRequestWebhookEvent::IssuerDecision::OrSymbol,
172
+ token_metadata: Lithic::TokenMetadata::OrHash,
177
173
  tokenization_channel:
178
174
  Lithic::TokenizationApprovalRequestWebhookEvent::TokenizationChannel::OrSymbol,
179
175
  tokenization_token: String,
180
176
  wallet_decisioning_info: Lithic::WalletDecisioningInfo::OrHash,
181
177
  device: Lithic::Device::OrHash,
182
- digital_wallet_token_metadata:
183
- Lithic::DigitalWalletTokenMetadata::OrHash,
184
178
  rule_results: T::Array[Lithic::TokenizationRuleResult::OrHash],
185
179
  tokenization_decline_reasons:
186
180
  T::Array[Lithic::TokenizationDeclineReason::OrSymbol],
@@ -204,14 +198,14 @@ module Lithic
204
198
  # Whether Lithic decisioned on the token, and if so, what the decision was.
205
199
  # APPROVED/VERIFICATION_REQUIRED/DENIED.
206
200
  issuer_decision:,
201
+ # Contains the metadata for the digital wallet being tokenized.
202
+ token_metadata:,
207
203
  # The channel through which the tokenization was made.
208
204
  tokenization_channel:,
209
205
  # Unique identifier for the digital wallet token attempt
210
206
  tokenization_token:,
211
207
  wallet_decisioning_info:,
212
208
  device: nil,
213
- # Contains the metadata for the digital wallet being tokenized.
214
- digital_wallet_token_metadata: nil,
215
209
  # Results from rules that were evaluated for this tokenization
216
210
  rule_results: nil,
217
211
  # List of reasons why the tokenization was declined
@@ -237,12 +231,12 @@ module Lithic
237
231
  Lithic::TokenizationApprovalRequestWebhookEvent::EventType::TaggedSymbol,
238
232
  issuer_decision:
239
233
  Lithic::TokenizationApprovalRequestWebhookEvent::IssuerDecision::TaggedSymbol,
234
+ token_metadata: Lithic::TokenMetadata,
240
235
  tokenization_channel:
241
236
  Lithic::TokenizationApprovalRequestWebhookEvent::TokenizationChannel::TaggedSymbol,
242
237
  tokenization_token: String,
243
238
  wallet_decisioning_info: Lithic::WalletDecisioningInfo,
244
239
  device: Lithic::Device,
245
- digital_wallet_token_metadata: Lithic::DigitalWalletTokenMetadata,
246
240
  rule_results: T::Array[Lithic::TokenizationRuleResult],
247
241
  tokenization_decline_reasons:
248
242
  T::Array[Lithic::TokenizationDeclineReason::TaggedSymbol],
@@ -23,6 +23,17 @@ module Lithic
23
23
  sig { returns(Time) }
24
24
  attr_accessor :created
25
25
 
26
+ # Contains the metadata for the digital wallet being tokenized.
27
+ sig { returns(Lithic::TokenMetadata) }
28
+ attr_reader :digital_wallet_token_metadata
29
+
30
+ sig do
31
+ params(
32
+ digital_wallet_token_metadata: Lithic::TokenMetadata::OrHash
33
+ ).void
34
+ end
35
+ attr_writer :digital_wallet_token_metadata
36
+
26
37
  # The name of this event
27
38
  sig do
28
39
  returns(
@@ -68,18 +79,6 @@ module Lithic
68
79
  sig { params(device: Lithic::Device::OrHash).void }
69
80
  attr_writer :device
70
81
 
71
- # Contains the metadata for the digital wallet being tokenized.
72
- sig { returns(T.nilable(Lithic::DigitalWalletTokenMetadata)) }
73
- attr_reader :digital_wallet_token_metadata
74
-
75
- sig do
76
- params(
77
- digital_wallet_token_metadata:
78
- Lithic::DigitalWalletTokenMetadata::OrHash
79
- ).void
80
- end
81
- attr_writer :digital_wallet_token_metadata
82
-
83
82
  # The source of the tokenization.
84
83
  sig do
85
84
  returns(
@@ -104,6 +103,7 @@ module Lithic
104
103
  account_token: String,
105
104
  card_token: String,
106
105
  created: Time,
106
+ digital_wallet_token_metadata: Lithic::TokenMetadata::OrHash,
107
107
  event_type:
108
108
  Lithic::TokenizationDecisioningRequestWebhookEvent::EventType::OrSymbol,
109
109
  issuer_decision:
@@ -113,8 +113,6 @@ module Lithic
113
113
  tokenization_token: String,
114
114
  wallet_decisioning_info: Lithic::WalletDecisioningInfo::OrHash,
115
115
  device: Lithic::Device::OrHash,
116
- digital_wallet_token_metadata:
117
- Lithic::DigitalWalletTokenMetadata::OrHash,
118
116
  tokenization_source:
119
117
  Lithic::TokenizationDecisioningRequestWebhookEvent::TokenizationSource::OrSymbol
120
118
  ).returns(T.attached_class)
@@ -126,6 +124,8 @@ module Lithic
126
124
  card_token:,
127
125
  # Indicate when the request was received from Mastercard or Visa
128
126
  created:,
127
+ # Contains the metadata for the digital wallet being tokenized.
128
+ digital_wallet_token_metadata:,
129
129
  # The name of this event
130
130
  event_type:,
131
131
  # Whether Lithic decisioned on the token, and if so, what the decision was.
@@ -137,8 +137,6 @@ module Lithic
137
137
  tokenization_token:,
138
138
  wallet_decisioning_info:,
139
139
  device: nil,
140
- # Contains the metadata for the digital wallet being tokenized.
141
- digital_wallet_token_metadata: nil,
142
140
  # The source of the tokenization.
143
141
  tokenization_source: nil
144
142
  )
@@ -150,6 +148,7 @@ module Lithic
150
148
  account_token: String,
151
149
  card_token: String,
152
150
  created: Time,
151
+ digital_wallet_token_metadata: Lithic::TokenMetadata,
153
152
  event_type:
154
153
  Lithic::TokenizationDecisioningRequestWebhookEvent::EventType::TaggedSymbol,
155
154
  issuer_decision:
@@ -159,7 +158,6 @@ module Lithic
159
158
  tokenization_token: String,
160
159
  wallet_decisioning_info: Lithic::WalletDecisioningInfo,
161
160
  device: Lithic::Device,
162
- digital_wallet_token_metadata: Lithic::DigitalWalletTokenMetadata,
163
161
  tokenization_source:
164
162
  Lithic::TokenizationDecisioningRequestWebhookEvent::TokenizationSource::TaggedSymbol
165
163
  }
@@ -30,6 +30,8 @@ module Lithic
30
30
 
31
31
  AccountHolderRetrieveParams = Lithic::Models::AccountHolderRetrieveParams
32
32
 
33
+ AccountHolders = Lithic::Models::AccountHolders
34
+
33
35
  AccountHolderSimulateEnrollmentDocumentReviewParams =
34
36
  Lithic::Models::AccountHolderSimulateEnrollmentDocumentReviewParams
35
37
 
@@ -206,8 +208,6 @@ module Lithic
206
208
  DigitalWalletTokenizationUpdatedWebhookEvent =
207
209
  Lithic::Models::DigitalWalletTokenizationUpdatedWebhookEvent
208
210
 
209
- DigitalWalletTokenMetadata = Lithic::Models::DigitalWalletTokenMetadata
210
-
211
211
  Dispute = Lithic::Models::Dispute
212
212
 
213
213
  DisputeCreateParams = Lithic::Models::DisputeCreateParams
@@ -561,6 +561,8 @@ module Lithic
561
561
  TokenizationUpdatedWebhookEvent =
562
562
  Lithic::Models::TokenizationUpdatedWebhookEvent
563
563
 
564
+ TokenMetadata = Lithic::Models::TokenMetadata
565
+
564
566
  Transaction = Lithic::Models::Transaction
565
567
 
566
568
  TransactionExpireAuthorizationParams =
@@ -0,0 +1,80 @@
1
+ # typed: strong
2
+
3
+ module Lithic
4
+ module Resources
5
+ class AccountHolders
6
+ class Entities
7
+ # Create a new beneficial owner or replace the control person entity on an
8
+ # existing KYB account holder. This endpoint is only applicable for account
9
+ # holders enrolled through a KYB workflow with the Persona KYB provider. A new
10
+ # control person can only replace the existing one. A maximum of 4 beneficial
11
+ # owners can be associated with an account holder.
12
+ sig do
13
+ params(
14
+ account_holder_token: String,
15
+ address:
16
+ Lithic::AccountHolders::EntityCreateParams::Address::OrHash,
17
+ dob: String,
18
+ email: String,
19
+ first_name: String,
20
+ government_id: String,
21
+ last_name: String,
22
+ phone_number: String,
23
+ type: Lithic::AccountHolders::EntityCreateParams::Type::OrSymbol,
24
+ request_options: Lithic::RequestOptions::OrHash
25
+ ).returns(Lithic::Models::AccountHolders::EntityCreateResponse)
26
+ end
27
+ def create(
28
+ # Globally unique identifier for the account holder.
29
+ account_holder_token,
30
+ # Individual's current address - PO boxes, UPS drops, and FedEx drops are not
31
+ # acceptable; APO/FPO are acceptable. Only USA addresses are currently supported.
32
+ address:,
33
+ # Individual's date of birth, as an RFC 3339 date.
34
+ dob:,
35
+ # Individual's email address. If utilizing Lithic for chargeback processing, this
36
+ # customer email address may be used to communicate dispute status and resolution.
37
+ email:,
38
+ # Individual's first name, as it appears on government-issued identity documents.
39
+ first_name:,
40
+ # Government-issued identification number (required for identity verification and
41
+ # compliance with banking regulations). Social Security Numbers (SSN) and
42
+ # Individual Taxpayer Identification Numbers (ITIN) are currently supported,
43
+ # entered as full nine-digits, with or without hyphens
44
+ government_id:,
45
+ # Individual's last name, as it appears on government-issued identity documents.
46
+ last_name:,
47
+ # Individual's phone number, entered in E.164 format.
48
+ phone_number:,
49
+ # The type of entity to create on the account holder
50
+ type:,
51
+ request_options: {}
52
+ )
53
+ end
54
+
55
+ # Deactivate a beneficial owner entity on an existing KYB account holder. Only
56
+ # beneficial owner entities can be deactivated.
57
+ sig do
58
+ params(
59
+ entity_token: String,
60
+ account_holder_token: String,
61
+ request_options: Lithic::RequestOptions::OrHash
62
+ ).returns(Lithic::AccountHolders::AccountHolderEntity)
63
+ end
64
+ def delete(
65
+ # Globally unique identifier for the entity.
66
+ entity_token,
67
+ # Globally unique identifier for the account holder.
68
+ account_holder_token:,
69
+ request_options: {}
70
+ )
71
+ end
72
+
73
+ # @api private
74
+ sig { params(client: Lithic::Client).returns(T.attached_class) }
75
+ def self.new(client:)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -3,6 +3,9 @@
3
3
  module Lithic
4
4
  module Resources
5
5
  class AccountHolders
6
+ sig { returns(Lithic::Resources::AccountHolders::Entities) }
7
+ attr_reader :entities
8
+
6
9
  # Create an account holder and initiate the appropriate onboarding workflow.
7
10
  # Account holders and accounts have a 1:1 relationship. When an account holder is
8
11
  # successfully created an associated account is also created. All calls to this
@@ -39,7 +39,8 @@ module Lithic
39
39
  # several event streams, the effective one is defined by the separate
40
40
  # `event_stream` field.
41
41
  #
42
- # - `CONDITIONAL_BLOCK`: AUTHORIZATION event stream.
42
+ # - `CONDITIONAL_BLOCK`: Deprecated. Use `CONDITIONAL_ACTION` instead.
43
+ # AUTHORIZATION event stream.
43
44
  # - `VELOCITY_LIMIT`: AUTHORIZATION event stream.
44
45
  # - `MERCHANT_LOCK`: AUTHORIZATION event stream.
45
46
  # - `CONDITIONAL_ACTION`: AUTHORIZATION, THREE_DS_AUTHENTICATION, TOKENIZATION,
@@ -0,0 +1,156 @@
1
+ # typed: strong
2
+
3
+ module Lithic
4
+ module Resources
5
+ class FinancialAccounts
6
+ class InterestTierSchedule
7
+ # Create a new interest tier schedule entry for a supported financial account
8
+ sig do
9
+ params(
10
+ financial_account_token: String,
11
+ credit_product_token: String,
12
+ effective_date: Date,
13
+ tier_name: String,
14
+ tier_rates: T.anything,
15
+ request_options: Lithic::RequestOptions::OrHash
16
+ ).returns(
17
+ Lithic::FinancialAccounts::FinancialAccountsInterestTierSchedule
18
+ )
19
+ end
20
+ def create(
21
+ # Globally unique identifier for financial account
22
+ financial_account_token,
23
+ # Globally unique identifier for a credit product
24
+ credit_product_token:,
25
+ # Date the tier should be effective in YYYY-MM-DD format
26
+ effective_date:,
27
+ # Name of a tier contained in the credit product. Mutually exclusive with
28
+ # tier_rates
29
+ tier_name: nil,
30
+ # Custom rates per category. Mutually exclusive with tier_name
31
+ tier_rates: nil,
32
+ request_options: {}
33
+ )
34
+ end
35
+
36
+ # Get a specific interest tier schedule by effective date
37
+ sig do
38
+ params(
39
+ effective_date: Date,
40
+ financial_account_token: String,
41
+ request_options: Lithic::RequestOptions::OrHash
42
+ ).returns(
43
+ Lithic::FinancialAccounts::FinancialAccountsInterestTierSchedule
44
+ )
45
+ end
46
+ def retrieve(
47
+ # Effective date in ISO format (YYYY-MM-DD)
48
+ effective_date,
49
+ # Globally unique identifier for financial account
50
+ financial_account_token:,
51
+ request_options: {}
52
+ )
53
+ end
54
+
55
+ # Update an existing interest tier schedule
56
+ sig do
57
+ params(
58
+ effective_date: Date,
59
+ financial_account_token: String,
60
+ tier_name: String,
61
+ tier_rates: T.anything,
62
+ request_options: Lithic::RequestOptions::OrHash
63
+ ).returns(
64
+ Lithic::FinancialAccounts::FinancialAccountsInterestTierSchedule
65
+ )
66
+ end
67
+ def update(
68
+ # Path param: Effective date in ISO format (YYYY-MM-DD)
69
+ effective_date,
70
+ # Path param: Globally unique identifier for financial account
71
+ financial_account_token:,
72
+ # Body param: Name of a tier contained in the credit product. Mutually exclusive
73
+ # with tier_rates
74
+ tier_name: nil,
75
+ # Body param: Custom rates per category. Mutually exclusive with tier_name
76
+ tier_rates: nil,
77
+ request_options: {}
78
+ )
79
+ end
80
+
81
+ # List interest tier schedules for a financial account with optional date
82
+ # filtering.
83
+ #
84
+ # If no date parameters are provided, returns all tier schedules. If date
85
+ # parameters are provided, uses filtering to return matching schedules (max 100).
86
+ #
87
+ # - for_date: Returns exact match (takes precedence over other dates)
88
+ # - before_date: Returns schedules with effective_date <= before_date
89
+ # - after_date: Returns schedules with effective_date >= after_date
90
+ # - Both before_date and after_date: Returns schedules in range
91
+ sig do
92
+ params(
93
+ financial_account_token: String,
94
+ after_date: Date,
95
+ before_date: Date,
96
+ for_date: Date,
97
+ request_options: Lithic::RequestOptions::OrHash
98
+ ).returns(
99
+ Lithic::Internal::SinglePage[
100
+ Lithic::FinancialAccounts::FinancialAccountsInterestTierSchedule
101
+ ]
102
+ )
103
+ end
104
+ def list(
105
+ # Globally unique identifier for financial account
106
+ financial_account_token,
107
+ # Return schedules with effective_date >= after_date (ISO format YYYY-MM-DD)
108
+ after_date: nil,
109
+ # Return schedules with effective_date <= before_date (ISO format YYYY-MM-DD)
110
+ before_date: nil,
111
+ # Return schedule with effective_date == for_date (ISO format YYYY-MM-DD)
112
+ for_date: nil,
113
+ request_options: {}
114
+ )
115
+ end
116
+
117
+ # Delete an interest tier schedule entry.
118
+ #
119
+ # Returns:
120
+ #
121
+ # - 400 Bad Request: Invalid effective_date format OR attempting to delete the
122
+ # earliest tier schedule entry for a non-PENDING account
123
+ # - 404 Not Found: Tier schedule entry not found for the given effective_date OR
124
+ # ledger account not found
125
+ #
126
+ # Note: PENDING accounts can delete the earliest tier schedule entry (account
127
+ # hasn't opened yet). Active/non-PENDING accounts cannot delete the earliest entry
128
+ # to prevent orphaning the account.
129
+ #
130
+ # If the deleted tier schedule has a past effective_date and the account is
131
+ # ACTIVE, the loan tape rebuild configuration will be updated to trigger rebuilds
132
+ # from that date.
133
+ sig do
134
+ params(
135
+ effective_date: Date,
136
+ financial_account_token: String,
137
+ request_options: Lithic::RequestOptions::OrHash
138
+ ).void
139
+ end
140
+ def delete(
141
+ # Effective date in ISO format (YYYY-MM-DD)
142
+ effective_date,
143
+ # Globally unique identifier for financial account
144
+ financial_account_token:,
145
+ request_options: {}
146
+ )
147
+ end
148
+
149
+ # @api private
150
+ sig { params(client: Lithic::Client).returns(T.attached_class) }
151
+ def self.new(client:)
152
+ end
153
+ end
154
+ end
155
+ end
156
+ end
@@ -0,0 +1,30 @@
1
+ # typed: strong
2
+
3
+ module Lithic
4
+ module Resources
5
+ class FinancialAccounts
6
+ class LoanTapeConfiguration
7
+ # Get the loan tape configuration for a given financial account.
8
+ sig do
9
+ params(
10
+ financial_account_token: String,
11
+ request_options: Lithic::RequestOptions::OrHash
12
+ ).returns(
13
+ Lithic::FinancialAccounts::FinancialAccountsLoanTapeConfiguration
14
+ )
15
+ end
16
+ def retrieve(
17
+ # Globally unique identifier for financial account.
18
+ financial_account_token,
19
+ request_options: {}
20
+ )
21
+ end
22
+
23
+ # @api private
24
+ sig { params(client: Lithic::Client).returns(T.attached_class) }
25
+ def self.new(client:)
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -20,6 +20,16 @@ module Lithic
20
20
  sig { returns(Lithic::Resources::FinancialAccounts::LoanTapes) }
21
21
  attr_reader :loan_tapes
22
22
 
23
+ sig do
24
+ returns(Lithic::Resources::FinancialAccounts::LoanTapeConfiguration)
25
+ end
26
+ attr_reader :loan_tape_configuration
27
+
28
+ sig do
29
+ returns(Lithic::Resources::FinancialAccounts::InterestTierSchedule)
30
+ end
31
+ attr_reader :interest_tier_schedule
32
+
23
33
  # Create a new financial account
24
34
  sig do
25
35
  params(
@@ -0,0 +1,137 @@
1
+ module Lithic
2
+ module Models
3
+ class AccountHolderEntity = AccountHolders::AccountHolderEntity
4
+
5
+ module AccountHolders
6
+ type account_holder_entity =
7
+ {
8
+ token: String,
9
+ account_holder_token: String,
10
+ address: Lithic::AccountHolders::AccountHolderEntity::Address,
11
+ dob: String?,
12
+ email: String?,
13
+ first_name: String?,
14
+ last_name: String?,
15
+ phone_number: String?,
16
+ status: Lithic::Models::AccountHolders::AccountHolderEntity::status,
17
+ type: Lithic::Models::AccountHolders::AccountHolderEntity::type_
18
+ }
19
+
20
+ class AccountHolderEntity < Lithic::Internal::Type::BaseModel
21
+ attr_accessor token: String
22
+
23
+ attr_accessor account_holder_token: String
24
+
25
+ attr_accessor address: Lithic::AccountHolders::AccountHolderEntity::Address
26
+
27
+ attr_accessor dob: String?
28
+
29
+ attr_accessor email: String?
30
+
31
+ attr_accessor first_name: String?
32
+
33
+ attr_accessor last_name: String?
34
+
35
+ attr_accessor phone_number: String?
36
+
37
+ attr_accessor status: Lithic::Models::AccountHolders::AccountHolderEntity::status
38
+
39
+ attr_accessor type: Lithic::Models::AccountHolders::AccountHolderEntity::type_
40
+
41
+ def initialize: (
42
+ token: String,
43
+ account_holder_token: String,
44
+ address: Lithic::AccountHolders::AccountHolderEntity::Address,
45
+ dob: String?,
46
+ email: String?,
47
+ first_name: String?,
48
+ last_name: String?,
49
+ phone_number: String?,
50
+ status: Lithic::Models::AccountHolders::AccountHolderEntity::status,
51
+ type: Lithic::Models::AccountHolders::AccountHolderEntity::type_
52
+ ) -> void
53
+
54
+ def to_hash: -> {
55
+ token: String,
56
+ account_holder_token: String,
57
+ address: Lithic::AccountHolders::AccountHolderEntity::Address,
58
+ dob: String?,
59
+ email: String?,
60
+ first_name: String?,
61
+ last_name: String?,
62
+ phone_number: String?,
63
+ status: Lithic::Models::AccountHolders::AccountHolderEntity::status,
64
+ type: Lithic::Models::AccountHolders::AccountHolderEntity::type_
65
+ }
66
+
67
+ type address =
68
+ {
69
+ :address1 => String,
70
+ city: String,
71
+ country: String,
72
+ postal_code: String,
73
+ state: String,
74
+ :address2 => String
75
+ }
76
+
77
+ class Address < Lithic::Internal::Type::BaseModel
78
+ attr_accessor address1: String
79
+
80
+ attr_accessor city: String
81
+
82
+ attr_accessor country: String
83
+
84
+ attr_accessor postal_code: String
85
+
86
+ attr_accessor state: String
87
+
88
+ attr_reader address2: String?
89
+
90
+ def address2=: (String) -> String
91
+
92
+ def initialize: (
93
+ address1: String,
94
+ city: String,
95
+ country: String,
96
+ postal_code: String,
97
+ state: String,
98
+ ?address2: String
99
+ ) -> void
100
+
101
+ def to_hash: -> {
102
+ :address1 => String,
103
+ city: String,
104
+ country: String,
105
+ postal_code: String,
106
+ state: String,
107
+ :address2 => String
108
+ }
109
+ end
110
+
111
+ type status = :ACCEPTED | :INACTIVE | :PENDING_REVIEW | :REJECTED
112
+
113
+ module Status
114
+ extend Lithic::Internal::Type::Enum
115
+
116
+ ACCEPTED: :ACCEPTED
117
+ INACTIVE: :INACTIVE
118
+ PENDING_REVIEW: :PENDING_REVIEW
119
+ REJECTED: :REJECTED
120
+
121
+ def self?.values: -> ::Array[Lithic::Models::AccountHolders::AccountHolderEntity::status]
122
+ end
123
+
124
+ type type_ = :BENEFICIAL_OWNER_INDIVIDUAL | :CONTROL_PERSON
125
+
126
+ module Type
127
+ extend Lithic::Internal::Type::Enum
128
+
129
+ BENEFICIAL_OWNER_INDIVIDUAL: :BENEFICIAL_OWNER_INDIVIDUAL
130
+ CONTROL_PERSON: :CONTROL_PERSON
131
+
132
+ def self?.values: -> ::Array[Lithic::Models::AccountHolders::AccountHolderEntity::type_]
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end