dodopayments 1.56.3 → 1.60.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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/internal/transport/base_client.rb +7 -1
  5. data/lib/dodopayments/internal/transport/pooled_net_requester.rb +6 -2
  6. data/lib/dodopayments/models/checkout_session_request.rb +50 -1
  7. data/lib/dodopayments/models/customer.rb +14 -1
  8. data/lib/dodopayments/models/customer_create_params.rb +12 -1
  9. data/lib/dodopayments/models/customer_limited_details.rb +9 -1
  10. data/lib/dodopayments/models/customer_retrieve_payment_methods_params.rb +14 -0
  11. data/lib/dodopayments/models/customer_retrieve_payment_methods_response.rb +183 -0
  12. data/lib/dodopayments/models/customer_update_params.rb +11 -1
  13. data/lib/dodopayments/models/product_create_params.rb +9 -9
  14. data/lib/dodopayments/models/subscription.rb +9 -1
  15. data/lib/dodopayments/models/subscription_list_response.rb +9 -1
  16. data/lib/dodopayments/models/subscription_update_payment_method_params.rb +41 -0
  17. data/lib/dodopayments/models/subscription_update_payment_method_response.rb +34 -0
  18. data/lib/dodopayments/models.rb +4 -0
  19. data/lib/dodopayments/resources/customers.rb +27 -2
  20. data/lib/dodopayments/resources/products.rb +3 -3
  21. data/lib/dodopayments/resources/subscriptions.rb +26 -0
  22. data/lib/dodopayments/version.rb +1 -1
  23. data/lib/dodopayments.rb +5 -0
  24. data/manifest.yaml +1 -0
  25. data/rbi/dodopayments/internal/transport/base_client.rbi +5 -0
  26. data/rbi/dodopayments/internal/transport/pooled_net_requester.rbi +6 -2
  27. data/rbi/dodopayments/internal/type/base_model.rbi +8 -4
  28. data/rbi/dodopayments/models/checkout_session_request.rbi +63 -0
  29. data/rbi/dodopayments/models/customer.rbi +11 -0
  30. data/rbi/dodopayments/models/customer_create_params.rbi +17 -1
  31. data/rbi/dodopayments/models/customer_limited_details.rbi +11 -0
  32. data/rbi/dodopayments/models/customer_retrieve_payment_methods_params.rbi +32 -0
  33. data/rbi/dodopayments/models/customer_retrieve_payment_methods_response.rbi +392 -0
  34. data/rbi/dodopayments/models/customer_update_params.rbi +13 -1
  35. data/rbi/dodopayments/models/product_create_params.rbi +8 -8
  36. data/rbi/dodopayments/models/subscription.rbi +8 -0
  37. data/rbi/dodopayments/models/subscription_list_response.rbi +8 -0
  38. data/rbi/dodopayments/models/subscription_update_payment_method_params.rbi +91 -0
  39. data/rbi/dodopayments/models/subscription_update_payment_method_response.rbi +56 -0
  40. data/rbi/dodopayments/models.rbi +6 -0
  41. data/rbi/dodopayments/resources/customers.rbi +25 -1
  42. data/rbi/dodopayments/resources/products.rbi +3 -3
  43. data/rbi/dodopayments/resources/subscriptions.rbi +20 -0
  44. data/sig/dodopayments/internal/transport/base_client.rbs +2 -0
  45. data/sig/dodopayments/internal/transport/pooled_net_requester.rbs +4 -1
  46. data/sig/dodopayments/models/checkout_session_request.rbs +49 -0
  47. data/sig/dodopayments/models/customer.rbs +7 -0
  48. data/sig/dodopayments/models/customer_create_params.rbs +12 -1
  49. data/sig/dodopayments/models/customer_limited_details.rbs +7 -0
  50. data/sig/dodopayments/models/customer_retrieve_payment_methods_params.rbs +15 -0
  51. data/sig/dodopayments/models/customer_retrieve_payment_methods_response.rbs +180 -0
  52. data/sig/dodopayments/models/customer_update_params.rbs +9 -1
  53. data/sig/dodopayments/models/product_create_params.rbs +6 -6
  54. data/sig/dodopayments/models/subscription.rbs +5 -0
  55. data/sig/dodopayments/models/subscription_list_response.rbs +5 -0
  56. data/sig/dodopayments/models/subscription_update_payment_method_params.rbs +46 -0
  57. data/sig/dodopayments/models/subscription_update_payment_method_response.rbs +35 -0
  58. data/sig/dodopayments/models.rbs +4 -0
  59. data/sig/dodopayments/resources/customers.rbs +7 -0
  60. data/sig/dodopayments/resources/products.rbs +1 -1
  61. data/sig/dodopayments/resources/subscriptions.rbs +8 -0
  62. metadata +14 -2
@@ -0,0 +1,392 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class CustomerRetrievePaymentMethodsResponse < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig do
15
+ returns(
16
+ T::Array[
17
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item
18
+ ]
19
+ )
20
+ end
21
+ attr_accessor :items
22
+
23
+ sig do
24
+ params(
25
+ items:
26
+ T::Array[
27
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::OrHash
28
+ ]
29
+ ).returns(T.attached_class)
30
+ end
31
+ def self.new(items:)
32
+ end
33
+
34
+ sig do
35
+ override.returns(
36
+ {
37
+ items:
38
+ T::Array[
39
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item
40
+ ]
41
+ }
42
+ )
43
+ end
44
+ def to_hash
45
+ end
46
+
47
+ class Item < Dodopayments::Internal::Type::BaseModel
48
+ OrHash =
49
+ T.type_alias do
50
+ T.any(
51
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item,
52
+ Dodopayments::Internal::AnyHash
53
+ )
54
+ end
55
+
56
+ sig do
57
+ returns(
58
+ T::Hash[
59
+ Symbol,
60
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::ConnectorPaymentMethod
61
+ ]
62
+ )
63
+ end
64
+ attr_accessor :connector_payment_methods
65
+
66
+ # PaymentMethod enum from hyperswitch
67
+ #
68
+ # https://github.com/juspay/hyperswitch/blob/ecd05d53c99ae701ac94893ec632a3988afe3238/crates/common_enums/src/enums.rs#L2097
69
+ sig do
70
+ returns(
71
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
72
+ )
73
+ end
74
+ attr_accessor :payment_method
75
+
76
+ sig { returns(String) }
77
+ attr_accessor :payment_method_id
78
+
79
+ sig { returns(T::Hash[Symbol, String]) }
80
+ attr_accessor :profile_map
81
+
82
+ sig do
83
+ returns(
84
+ T.nilable(
85
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::Card
86
+ )
87
+ )
88
+ end
89
+ attr_reader :card
90
+
91
+ sig do
92
+ params(
93
+ card:
94
+ T.nilable(
95
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::Card::OrHash
96
+ )
97
+ ).void
98
+ end
99
+ attr_writer :card
100
+
101
+ sig { returns(T.nilable(Time)) }
102
+ attr_accessor :last_used_at
103
+
104
+ sig { returns(T.nilable(T::Boolean)) }
105
+ attr_accessor :recurring_enabled
106
+
107
+ sig do
108
+ params(
109
+ connector_payment_methods:
110
+ T::Hash[
111
+ Symbol,
112
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::ConnectorPaymentMethod::OrHash
113
+ ],
114
+ payment_method:
115
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::OrSymbol,
116
+ payment_method_id: String,
117
+ profile_map: T::Hash[Symbol, String],
118
+ card:
119
+ T.nilable(
120
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::Card::OrHash
121
+ ),
122
+ last_used_at: T.nilable(Time),
123
+ recurring_enabled: T.nilable(T::Boolean)
124
+ ).returns(T.attached_class)
125
+ end
126
+ def self.new(
127
+ connector_payment_methods:,
128
+ # PaymentMethod enum from hyperswitch
129
+ #
130
+ # https://github.com/juspay/hyperswitch/blob/ecd05d53c99ae701ac94893ec632a3988afe3238/crates/common_enums/src/enums.rs#L2097
131
+ payment_method:,
132
+ payment_method_id:,
133
+ profile_map:,
134
+ card: nil,
135
+ last_used_at: nil,
136
+ recurring_enabled: nil
137
+ )
138
+ end
139
+
140
+ sig do
141
+ override.returns(
142
+ {
143
+ connector_payment_methods:
144
+ T::Hash[
145
+ Symbol,
146
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::ConnectorPaymentMethod
147
+ ],
148
+ payment_method:
149
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol,
150
+ payment_method_id: String,
151
+ profile_map: T::Hash[Symbol, String],
152
+ card:
153
+ T.nilable(
154
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::Card
155
+ ),
156
+ last_used_at: T.nilable(Time),
157
+ recurring_enabled: T.nilable(T::Boolean)
158
+ }
159
+ )
160
+ end
161
+ def to_hash
162
+ end
163
+
164
+ class ConnectorPaymentMethod < Dodopayments::Internal::Type::BaseModel
165
+ OrHash =
166
+ T.type_alias do
167
+ T.any(
168
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::ConnectorPaymentMethod,
169
+ Dodopayments::Internal::AnyHash
170
+ )
171
+ end
172
+
173
+ sig { returns(String) }
174
+ attr_accessor :connector_mandate_id
175
+
176
+ sig { returns(Integer) }
177
+ attr_accessor :original_payment_authorized_amount
178
+
179
+ sig { returns(Dodopayments::Currency::TaggedSymbol) }
180
+ attr_accessor :original_payment_authorized_currency
181
+
182
+ sig do
183
+ returns(T.nilable(Dodopayments::PaymentMethodTypes::TaggedSymbol))
184
+ end
185
+ attr_accessor :payment_method_type
186
+
187
+ sig do
188
+ params(
189
+ connector_mandate_id: String,
190
+ original_payment_authorized_amount: Integer,
191
+ original_payment_authorized_currency:
192
+ Dodopayments::Currency::OrSymbol,
193
+ payment_method_type:
194
+ T.nilable(Dodopayments::PaymentMethodTypes::OrSymbol)
195
+ ).returns(T.attached_class)
196
+ end
197
+ def self.new(
198
+ connector_mandate_id:,
199
+ original_payment_authorized_amount:,
200
+ original_payment_authorized_currency:,
201
+ payment_method_type: nil
202
+ )
203
+ end
204
+
205
+ sig do
206
+ override.returns(
207
+ {
208
+ connector_mandate_id: String,
209
+ original_payment_authorized_amount: Integer,
210
+ original_payment_authorized_currency:
211
+ Dodopayments::Currency::TaggedSymbol,
212
+ payment_method_type:
213
+ T.nilable(Dodopayments::PaymentMethodTypes::TaggedSymbol)
214
+ }
215
+ )
216
+ end
217
+ def to_hash
218
+ end
219
+ end
220
+
221
+ # PaymentMethod enum from hyperswitch
222
+ #
223
+ # https://github.com/juspay/hyperswitch/blob/ecd05d53c99ae701ac94893ec632a3988afe3238/crates/common_enums/src/enums.rs#L2097
224
+ module PaymentMethod
225
+ extend Dodopayments::Internal::Type::Enum
226
+
227
+ TaggedSymbol =
228
+ T.type_alias do
229
+ T.all(
230
+ Symbol,
231
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod
232
+ )
233
+ end
234
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
235
+
236
+ CARD =
237
+ T.let(
238
+ :card,
239
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
240
+ )
241
+ CARD_REDIRECT =
242
+ T.let(
243
+ :card_redirect,
244
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
245
+ )
246
+ PAY_LATER =
247
+ T.let(
248
+ :pay_later,
249
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
250
+ )
251
+ WALLET =
252
+ T.let(
253
+ :wallet,
254
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
255
+ )
256
+ BANK_REDIRECT =
257
+ T.let(
258
+ :bank_redirect,
259
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
260
+ )
261
+ BANK_TRANSFER =
262
+ T.let(
263
+ :bank_transfer,
264
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
265
+ )
266
+ CRYPTO =
267
+ T.let(
268
+ :crypto,
269
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
270
+ )
271
+ BANK_DEBIT =
272
+ T.let(
273
+ :bank_debit,
274
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
275
+ )
276
+ REWARD =
277
+ T.let(
278
+ :reward,
279
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
280
+ )
281
+ REAL_TIME_PAYMENT =
282
+ T.let(
283
+ :real_time_payment,
284
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
285
+ )
286
+ UPI =
287
+ T.let(
288
+ :upi,
289
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
290
+ )
291
+ VOUCHER =
292
+ T.let(
293
+ :voucher,
294
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
295
+ )
296
+ GIFT_CARD =
297
+ T.let(
298
+ :gift_card,
299
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
300
+ )
301
+ OPEN_BANKING =
302
+ T.let(
303
+ :open_banking,
304
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
305
+ )
306
+ MOBILE_PAYMENT =
307
+ T.let(
308
+ :mobile_payment,
309
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
310
+ )
311
+
312
+ sig do
313
+ override.returns(
314
+ T::Array[
315
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::PaymentMethod::TaggedSymbol
316
+ ]
317
+ )
318
+ end
319
+ def self.values
320
+ end
321
+ end
322
+
323
+ class Card < Dodopayments::Internal::Type::BaseModel
324
+ OrHash =
325
+ T.type_alias do
326
+ T.any(
327
+ Dodopayments::Models::CustomerRetrievePaymentMethodsResponse::Item::Card,
328
+ Dodopayments::Internal::AnyHash
329
+ )
330
+ end
331
+
332
+ # ISO country code alpha2 variant
333
+ sig { returns(T.nilable(Dodopayments::CountryCode::TaggedSymbol)) }
334
+ attr_accessor :card_issuing_country
335
+
336
+ sig { returns(T.nilable(String)) }
337
+ attr_accessor :card_network
338
+
339
+ sig { returns(T.nilable(String)) }
340
+ attr_accessor :card_type
341
+
342
+ sig { returns(T.nilable(String)) }
343
+ attr_accessor :expiry_month
344
+
345
+ sig { returns(T.nilable(String)) }
346
+ attr_accessor :expiry_year
347
+
348
+ sig { returns(T.nilable(String)) }
349
+ attr_accessor :last4_digits
350
+
351
+ sig do
352
+ params(
353
+ card_issuing_country:
354
+ T.nilable(Dodopayments::CountryCode::OrSymbol),
355
+ card_network: T.nilable(String),
356
+ card_type: T.nilable(String),
357
+ expiry_month: T.nilable(String),
358
+ expiry_year: T.nilable(String),
359
+ last4_digits: T.nilable(String)
360
+ ).returns(T.attached_class)
361
+ end
362
+ def self.new(
363
+ # ISO country code alpha2 variant
364
+ card_issuing_country: nil,
365
+ card_network: nil,
366
+ card_type: nil,
367
+ expiry_month: nil,
368
+ expiry_year: nil,
369
+ last4_digits: nil
370
+ )
371
+ end
372
+
373
+ sig do
374
+ override.returns(
375
+ {
376
+ card_issuing_country:
377
+ T.nilable(Dodopayments::CountryCode::TaggedSymbol),
378
+ card_network: T.nilable(String),
379
+ card_type: T.nilable(String),
380
+ expiry_month: T.nilable(String),
381
+ expiry_year: T.nilable(String),
382
+ last4_digits: T.nilable(String)
383
+ }
384
+ )
385
+ end
386
+ def to_hash
387
+ end
388
+ end
389
+ end
390
+ end
391
+ end
392
+ end
@@ -14,6 +14,10 @@ module Dodopayments
14
14
  )
15
15
  end
16
16
 
17
+ # Additional metadata for the customer
18
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
19
+ attr_accessor :metadata
20
+
17
21
  sig { returns(T.nilable(String)) }
18
22
  attr_accessor :name
19
23
 
@@ -22,17 +26,25 @@ module Dodopayments
22
26
 
23
27
  sig do
24
28
  params(
29
+ metadata: T.nilable(T::Hash[Symbol, String]),
25
30
  name: T.nilable(String),
26
31
  phone_number: T.nilable(String),
27
32
  request_options: Dodopayments::RequestOptions::OrHash
28
33
  ).returns(T.attached_class)
29
34
  end
30
- def self.new(name: nil, phone_number: nil, request_options: {})
35
+ def self.new(
36
+ # Additional metadata for the customer
37
+ metadata: nil,
38
+ name: nil,
39
+ phone_number: nil,
40
+ request_options: {}
41
+ )
31
42
  end
32
43
 
33
44
  sig do
34
45
  override.returns(
35
46
  {
47
+ metadata: T.nilable(T::Hash[Symbol, String]),
36
48
  name: T.nilable(String),
37
49
  phone_number: T.nilable(String),
38
50
  request_options: Dodopayments::RequestOptions
@@ -14,6 +14,10 @@ module Dodopayments
14
14
  )
15
15
  end
16
16
 
17
+ # Name of the product
18
+ sig { returns(String) }
19
+ attr_accessor :name
20
+
17
21
  # Price configuration for the product
18
22
  sig do
19
23
  returns(
@@ -93,12 +97,9 @@ module Dodopayments
93
97
  sig { params(metadata: T::Hash[Symbol, String]).void }
94
98
  attr_writer :metadata
95
99
 
96
- # Optional name of the product
97
- sig { returns(T.nilable(String)) }
98
- attr_accessor :name
99
-
100
100
  sig do
101
101
  params(
102
+ name: String,
102
103
  price:
103
104
  T.any(
104
105
  Dodopayments::Price::OneTimePrice::OrHash,
@@ -119,11 +120,12 @@ module Dodopayments
119
120
  T.nilable(Dodopayments::LicenseKeyDuration::OrHash),
120
121
  license_key_enabled: T.nilable(T::Boolean),
121
122
  metadata: T::Hash[Symbol, String],
122
- name: T.nilable(String),
123
123
  request_options: Dodopayments::RequestOptions::OrHash
124
124
  ).returns(T.attached_class)
125
125
  end
126
126
  def self.new(
127
+ # Name of the product
128
+ name:,
127
129
  # Price configuration for the product
128
130
  price:,
129
131
  # Tax category applied to this product
@@ -148,8 +150,6 @@ module Dodopayments
148
150
  license_key_enabled: nil,
149
151
  # Additional metadata for the product
150
152
  metadata: nil,
151
- # Optional name of the product
152
- name: nil,
153
153
  request_options: {}
154
154
  )
155
155
  end
@@ -157,6 +157,7 @@ module Dodopayments
157
157
  sig do
158
158
  override.returns(
159
159
  {
160
+ name: String,
160
161
  price:
161
162
  T.any(
162
163
  Dodopayments::Price::OneTimePrice,
@@ -176,7 +177,6 @@ module Dodopayments
176
177
  license_key_duration: T.nilable(Dodopayments::LicenseKeyDuration),
177
178
  license_key_enabled: T.nilable(T::Boolean),
178
179
  metadata: T::Hash[Symbol, String],
179
- name: T.nilable(String),
180
180
  request_options: Dodopayments::RequestOptions
181
181
  }
182
182
  )
@@ -122,6 +122,10 @@ module Dodopayments
122
122
  sig { returns(T.nilable(Time)) }
123
123
  attr_accessor :expires_at
124
124
 
125
+ # Saved payment method id used for recurring charges
126
+ sig { returns(T.nilable(String)) }
127
+ attr_accessor :payment_method_id
128
+
125
129
  # Tax identifier provided for this subscription (if applicable)
126
130
  sig { returns(T.nilable(String)) }
127
131
  attr_accessor :tax_id
@@ -155,6 +159,7 @@ module Dodopayments
155
159
  discount_cycles_remaining: T.nilable(Integer),
156
160
  discount_id: T.nilable(String),
157
161
  expires_at: T.nilable(Time),
162
+ payment_method_id: T.nilable(String),
158
163
  tax_id: T.nilable(String)
159
164
  ).returns(T.attached_class)
160
165
  end
@@ -213,6 +218,8 @@ module Dodopayments
213
218
  discount_id: nil,
214
219
  # Timestamp when the subscription will expire
215
220
  expires_at: nil,
221
+ # Saved payment method id used for recurring charges
222
+ payment_method_id: nil,
216
223
  # Tax identifier provided for this subscription (if applicable)
217
224
  tax_id: nil
218
225
  )
@@ -249,6 +256,7 @@ module Dodopayments
249
256
  discount_cycles_remaining: T.nilable(Integer),
250
257
  discount_id: T.nilable(String),
251
258
  expires_at: T.nilable(Time),
259
+ payment_method_id: T.nilable(String),
252
260
  tax_id: T.nilable(String)
253
261
  }
254
262
  )
@@ -113,6 +113,10 @@ module Dodopayments
113
113
  sig { returns(T.nilable(String)) }
114
114
  attr_accessor :discount_id
115
115
 
116
+ # Saved payment method id used for recurring charges
117
+ sig { returns(T.nilable(String)) }
118
+ attr_accessor :payment_method_id
119
+
116
120
  # Tax identifier provided for this subscription (if applicable)
117
121
  sig { returns(T.nilable(String)) }
118
122
  attr_accessor :tax_id
@@ -143,6 +147,7 @@ module Dodopayments
143
147
  cancelled_at: T.nilable(Time),
144
148
  discount_cycles_remaining: T.nilable(Integer),
145
149
  discount_id: T.nilable(String),
150
+ payment_method_id: T.nilable(String),
146
151
  tax_id: T.nilable(String)
147
152
  ).returns(T.attached_class)
148
153
  end
@@ -195,6 +200,8 @@ module Dodopayments
195
200
  discount_cycles_remaining: nil,
196
201
  # The discount id if discount is applied
197
202
  discount_id: nil,
203
+ # Saved payment method id used for recurring charges
204
+ payment_method_id: nil,
198
205
  # Tax identifier provided for this subscription (if applicable)
199
206
  tax_id: nil
200
207
  )
@@ -228,6 +235,7 @@ module Dodopayments
228
235
  cancelled_at: T.nilable(Time),
229
236
  discount_cycles_remaining: T.nilable(Integer),
230
237
  discount_id: T.nilable(String),
238
+ payment_method_id: T.nilable(String),
231
239
  tax_id: T.nilable(String)
232
240
  }
233
241
  )
@@ -0,0 +1,91 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class SubscriptionUpdatePaymentMethodParams < Dodopayments::Internal::Type::BaseModel
6
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
7
+ include Dodopayments::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Dodopayments::SubscriptionUpdatePaymentMethodParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig do
18
+ returns(
19
+ Dodopayments::SubscriptionUpdatePaymentMethodParams::Type::OrSymbol
20
+ )
21
+ end
22
+ attr_accessor :type
23
+
24
+ sig { returns(T.nilable(String)) }
25
+ attr_accessor :return_url
26
+
27
+ sig { returns(String) }
28
+ attr_accessor :payment_method_id
29
+
30
+ sig do
31
+ params(
32
+ type:
33
+ Dodopayments::SubscriptionUpdatePaymentMethodParams::Type::OrSymbol,
34
+ payment_method_id: String,
35
+ return_url: T.nilable(String),
36
+ request_options: Dodopayments::RequestOptions::OrHash
37
+ ).returns(T.attached_class)
38
+ end
39
+ def self.new(
40
+ type:,
41
+ payment_method_id:,
42
+ return_url: nil,
43
+ request_options: {}
44
+ )
45
+ end
46
+
47
+ sig do
48
+ override.returns(
49
+ {
50
+ type:
51
+ Dodopayments::SubscriptionUpdatePaymentMethodParams::Type::OrSymbol,
52
+ return_url: T.nilable(String),
53
+ payment_method_id: String,
54
+ request_options: Dodopayments::RequestOptions
55
+ }
56
+ )
57
+ end
58
+ def to_hash
59
+ end
60
+
61
+ module Type
62
+ extend Dodopayments::Internal::Type::Enum
63
+
64
+ TaggedSymbol =
65
+ T.type_alias do
66
+ T.all(
67
+ Symbol,
68
+ Dodopayments::SubscriptionUpdatePaymentMethodParams::Type
69
+ )
70
+ end
71
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
72
+
73
+ EXISTING =
74
+ T.let(
75
+ :existing,
76
+ Dodopayments::SubscriptionUpdatePaymentMethodParams::Type::TaggedSymbol
77
+ )
78
+
79
+ sig do
80
+ override.returns(
81
+ T::Array[
82
+ Dodopayments::SubscriptionUpdatePaymentMethodParams::Type::TaggedSymbol
83
+ ]
84
+ )
85
+ end
86
+ def self.values
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,56 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class SubscriptionUpdatePaymentMethodResponse < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::Models::SubscriptionUpdatePaymentMethodResponse,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(T.nilable(String)) }
15
+ attr_accessor :client_secret
16
+
17
+ sig { returns(T.nilable(Time)) }
18
+ attr_accessor :expires_on
19
+
20
+ sig { returns(T.nilable(String)) }
21
+ attr_accessor :payment_id
22
+
23
+ sig { returns(T.nilable(String)) }
24
+ attr_accessor :payment_link
25
+
26
+ sig do
27
+ params(
28
+ client_secret: T.nilable(String),
29
+ expires_on: T.nilable(Time),
30
+ payment_id: T.nilable(String),
31
+ payment_link: T.nilable(String)
32
+ ).returns(T.attached_class)
33
+ end
34
+ def self.new(
35
+ client_secret: nil,
36
+ expires_on: nil,
37
+ payment_id: nil,
38
+ payment_link: nil
39
+ )
40
+ end
41
+
42
+ sig do
43
+ override.returns(
44
+ {
45
+ client_secret: T.nilable(String),
46
+ expires_on: T.nilable(Time),
47
+ payment_id: T.nilable(String),
48
+ payment_link: T.nilable(String)
49
+ }
50
+ )
51
+ end
52
+ def to_hash
53
+ end
54
+ end
55
+ end
56
+ end