dodopayments 1.71.1 → 1.74.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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/models/checkout_session_preview_params.rb +14 -0
  5. data/lib/dodopayments/models/checkout_session_preview_response.rb +426 -0
  6. data/lib/dodopayments/models/checkout_session_request.rb +94 -1
  7. data/lib/dodopayments/models/customer_list_params.rb +25 -1
  8. data/lib/dodopayments/models/discount_list_params.rb +33 -1
  9. data/lib/dodopayments/models/discount_retrieve_by_code_params.rb +14 -0
  10. data/lib/dodopayments/models/license_key_list_params.rb +17 -1
  11. data/lib/dodopayments/models/payment.rb +40 -1
  12. data/lib/dodopayments/models/payment_list_response.rb +28 -1
  13. data/lib/dodopayments/models/payment_method_types.rb +13 -98
  14. data/lib/dodopayments/models/product.rb +9 -1
  15. data/lib/dodopayments/models/subscription.rb +32 -1
  16. data/lib/dodopayments/models/subscription_change_plan_params.rb +10 -1
  17. data/lib/dodopayments/models/subscription_list_response.rb +9 -1
  18. data/lib/dodopayments/models/subscription_preview_change_plan_params.rb +10 -1
  19. data/lib/dodopayments/models.rb +4 -0
  20. data/lib/dodopayments/resources/checkout_sessions.rb +64 -1
  21. data/lib/dodopayments/resources/customers.rb +7 -1
  22. data/lib/dodopayments/resources/discounts.rb +31 -1
  23. data/lib/dodopayments/resources/license_keys.rb +5 -1
  24. data/lib/dodopayments/resources/subscriptions.rb +6 -2
  25. data/lib/dodopayments/version.rb +1 -1
  26. data/lib/dodopayments.rb +3 -0
  27. data/rbi/dodopayments/models/checkout_session_preview_params.rbi +32 -0
  28. data/rbi/dodopayments/models/checkout_session_preview_response.rbi +616 -0
  29. data/rbi/dodopayments/models/checkout_session_request.rbi +183 -0
  30. data/rbi/dodopayments/models/customer_list_params.rbi +33 -0
  31. data/rbi/dodopayments/models/discount_list_params.rbi +44 -0
  32. data/rbi/dodopayments/models/discount_retrieve_by_code_params.rbi +32 -0
  33. data/rbi/dodopayments/models/license_key_list_params.rbi +22 -0
  34. data/rbi/dodopayments/models/payment.rbi +54 -0
  35. data/rbi/dodopayments/models/payment_list_response.rbi +16 -0
  36. data/rbi/dodopayments/models/payment_method_types.rbi +18 -186
  37. data/rbi/dodopayments/models/product.rbi +11 -3
  38. data/rbi/dodopayments/models/subscription.rbi +50 -0
  39. data/rbi/dodopayments/models/subscription_change_plan_params.rbi +10 -0
  40. data/rbi/dodopayments/models/subscription_list_response.rbi +8 -0
  41. data/rbi/dodopayments/models/subscription_preview_change_plan_params.rbi +10 -0
  42. data/rbi/dodopayments/models.rbi +6 -0
  43. data/rbi/dodopayments/resources/checkout_sessions.rbi +104 -0
  44. data/rbi/dodopayments/resources/customers.rbi +9 -0
  45. data/rbi/dodopayments/resources/discounts.rbi +28 -0
  46. data/rbi/dodopayments/resources/license_keys.rbi +6 -0
  47. data/rbi/dodopayments/resources/subscriptions.rbi +8 -0
  48. data/sig/dodopayments/models/checkout_session_preview_params.rbs +15 -0
  49. data/sig/dodopayments/models/checkout_session_preview_response.rbs +330 -0
  50. data/sig/dodopayments/models/checkout_session_request.rbs +81 -0
  51. data/sig/dodopayments/models/customer_list_params.rbs +26 -1
  52. data/sig/dodopayments/models/discount_list_params.rbs +34 -1
  53. data/sig/dodopayments/models/discount_retrieve_by_code_params.rbs +15 -0
  54. data/sig/dodopayments/models/license_key_list_params.rbs +14 -0
  55. data/sig/dodopayments/models/payment.rbs +22 -0
  56. data/sig/dodopayments/models/payment_list_response.rbs +10 -0
  57. data/sig/dodopayments/models/payment_method_types.rbs +26 -196
  58. data/sig/dodopayments/models/product.rbs +8 -3
  59. data/sig/dodopayments/models/subscription.rbs +17 -0
  60. data/sig/dodopayments/models/subscription_change_plan_params.rbs +6 -1
  61. data/sig/dodopayments/models/subscription_list_response.rbs +5 -0
  62. data/sig/dodopayments/models/subscription_preview_change_plan_params.rbs +6 -1
  63. data/sig/dodopayments/models.rbs +4 -0
  64. data/sig/dodopayments/resources/checkout_sessions.rbs +25 -0
  65. data/sig/dodopayments/resources/customers.rbs +3 -0
  66. data/sig/dodopayments/resources/discounts.rbs +9 -0
  67. data/sig/dodopayments/resources/license_keys.rbs +2 -0
  68. data/sig/dodopayments/resources/subscriptions.rbs +2 -0
  69. metadata +11 -2
@@ -9,205 +9,37 @@ module Dodopayments
9
9
  T.type_alias { T.all(Symbol, Dodopayments::PaymentMethodTypes) }
10
10
  OrSymbol = T.type_alias { T.any(Symbol, String) }
11
11
 
12
- ACH = T.let(:ach, Dodopayments::PaymentMethodTypes::TaggedSymbol)
13
- AFFIRM = T.let(:affirm, Dodopayments::PaymentMethodTypes::TaggedSymbol)
14
- AFTERPAY_CLEARPAY =
15
- T.let(
16
- :afterpay_clearpay,
17
- Dodopayments::PaymentMethodTypes::TaggedSymbol
18
- )
19
- ALFAMART =
20
- T.let(:alfamart, Dodopayments::PaymentMethodTypes::TaggedSymbol)
21
- ALI_PAY = T.let(:ali_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
22
- ALI_PAY_HK =
23
- T.let(:ali_pay_hk, Dodopayments::PaymentMethodTypes::TaggedSymbol)
24
- ALMA = T.let(:alma, Dodopayments::PaymentMethodTypes::TaggedSymbol)
25
- AMAZON_PAY =
26
- T.let(:amazon_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
12
+ CREDIT = T.let(:credit, Dodopayments::PaymentMethodTypes::TaggedSymbol)
13
+ DEBIT = T.let(:debit, Dodopayments::PaymentMethodTypes::TaggedSymbol)
14
+ UPI_COLLECT =
15
+ T.let(:upi_collect, Dodopayments::PaymentMethodTypes::TaggedSymbol)
16
+ UPI_INTENT =
17
+ T.let(:upi_intent, Dodopayments::PaymentMethodTypes::TaggedSymbol)
27
18
  APPLE_PAY =
28
19
  T.let(:apple_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
29
- ATOME = T.let(:atome, Dodopayments::PaymentMethodTypes::TaggedSymbol)
30
- BACS = T.let(:bacs, Dodopayments::PaymentMethodTypes::TaggedSymbol)
31
- BANCONTACT_CARD =
32
- T.let(:bancontact_card, Dodopayments::PaymentMethodTypes::TaggedSymbol)
33
- BECS = T.let(:becs, Dodopayments::PaymentMethodTypes::TaggedSymbol)
34
- BENEFIT = T.let(:benefit, Dodopayments::PaymentMethodTypes::TaggedSymbol)
35
- BIZUM = T.let(:bizum, Dodopayments::PaymentMethodTypes::TaggedSymbol)
36
- BLIK = T.let(:blik, Dodopayments::PaymentMethodTypes::TaggedSymbol)
37
- BOLETO = T.let(:boleto, Dodopayments::PaymentMethodTypes::TaggedSymbol)
38
- BCA_BANK_TRANSFER =
39
- T.let(
40
- :bca_bank_transfer,
41
- Dodopayments::PaymentMethodTypes::TaggedSymbol
42
- )
43
- BNI_VA = T.let(:bni_va, Dodopayments::PaymentMethodTypes::TaggedSymbol)
44
- BRI_VA = T.let(:bri_va, Dodopayments::PaymentMethodTypes::TaggedSymbol)
45
- CARD_REDIRECT =
46
- T.let(:card_redirect, Dodopayments::PaymentMethodTypes::TaggedSymbol)
47
- CIMB_VA = T.let(:cimb_va, Dodopayments::PaymentMethodTypes::TaggedSymbol)
48
- CLASSIC = T.let(:classic, Dodopayments::PaymentMethodTypes::TaggedSymbol)
49
- CREDIT = T.let(:credit, Dodopayments::PaymentMethodTypes::TaggedSymbol)
50
- CRYPTO_CURRENCY =
51
- T.let(:crypto_currency, Dodopayments::PaymentMethodTypes::TaggedSymbol)
52
20
  CASHAPP = T.let(:cashapp, Dodopayments::PaymentMethodTypes::TaggedSymbol)
53
- DANA = T.let(:dana, Dodopayments::PaymentMethodTypes::TaggedSymbol)
54
- DANAMON_VA =
55
- T.let(:danamon_va, Dodopayments::PaymentMethodTypes::TaggedSymbol)
56
- DEBIT = T.let(:debit, Dodopayments::PaymentMethodTypes::TaggedSymbol)
57
- DUIT_NOW =
58
- T.let(:duit_now, Dodopayments::PaymentMethodTypes::TaggedSymbol)
59
- EFECTY = T.let(:efecty, Dodopayments::PaymentMethodTypes::TaggedSymbol)
60
- EFT = T.let(:eft, Dodopayments::PaymentMethodTypes::TaggedSymbol)
61
- EPS = T.let(:eps, Dodopayments::PaymentMethodTypes::TaggedSymbol)
62
- FPS = T.let(:fps, Dodopayments::PaymentMethodTypes::TaggedSymbol)
63
- EVOUCHER =
64
- T.let(:evoucher, Dodopayments::PaymentMethodTypes::TaggedSymbol)
65
- GIROPAY = T.let(:giropay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
66
- GIVEX = T.let(:givex, Dodopayments::PaymentMethodTypes::TaggedSymbol)
67
21
  GOOGLE_PAY =
68
22
  T.let(:google_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
69
- GO_PAY = T.let(:go_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
70
- GCASH = T.let(:gcash, Dodopayments::PaymentMethodTypes::TaggedSymbol)
71
- IDEAL = T.let(:ideal, Dodopayments::PaymentMethodTypes::TaggedSymbol)
72
- INTERAC = T.let(:interac, Dodopayments::PaymentMethodTypes::TaggedSymbol)
73
- INDOMARET =
74
- T.let(:indomaret, Dodopayments::PaymentMethodTypes::TaggedSymbol)
75
- KLARNA = T.let(:klarna, Dodopayments::PaymentMethodTypes::TaggedSymbol)
76
- KAKAO_PAY =
77
- T.let(:kakao_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
78
- LOCAL_BANK_REDIRECT =
79
- T.let(
80
- :local_bank_redirect,
81
- Dodopayments::PaymentMethodTypes::TaggedSymbol
82
- )
83
- MANDIRI_VA =
84
- T.let(:mandiri_va, Dodopayments::PaymentMethodTypes::TaggedSymbol)
85
- KNET = T.let(:knet, Dodopayments::PaymentMethodTypes::TaggedSymbol)
86
- MB_WAY = T.let(:mb_way, Dodopayments::PaymentMethodTypes::TaggedSymbol)
87
- MOBILE_PAY =
88
- T.let(:mobile_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
89
- MOMO = T.let(:momo, Dodopayments::PaymentMethodTypes::TaggedSymbol)
90
- MOMO_ATM =
91
- T.let(:momo_atm, Dodopayments::PaymentMethodTypes::TaggedSymbol)
92
23
  MULTIBANCO =
93
24
  T.let(:multibanco, Dodopayments::PaymentMethodTypes::TaggedSymbol)
94
- ONLINE_BANKING_THAILAND =
95
- T.let(
96
- :online_banking_thailand,
97
- Dodopayments::PaymentMethodTypes::TaggedSymbol
98
- )
99
- ONLINE_BANKING_CZECH_REPUBLIC =
100
- T.let(
101
- :online_banking_czech_republic,
102
- Dodopayments::PaymentMethodTypes::TaggedSymbol
103
- )
104
- ONLINE_BANKING_FINLAND =
105
- T.let(
106
- :online_banking_finland,
107
- Dodopayments::PaymentMethodTypes::TaggedSymbol
108
- )
109
- ONLINE_BANKING_FPX =
110
- T.let(
111
- :online_banking_fpx,
112
- Dodopayments::PaymentMethodTypes::TaggedSymbol
113
- )
114
- ONLINE_BANKING_POLAND =
115
- T.let(
116
- :online_banking_poland,
117
- Dodopayments::PaymentMethodTypes::TaggedSymbol
118
- )
119
- ONLINE_BANKING_SLOVAKIA =
120
- T.let(
121
- :online_banking_slovakia,
122
- Dodopayments::PaymentMethodTypes::TaggedSymbol
123
- )
124
- OXXO = T.let(:oxxo, Dodopayments::PaymentMethodTypes::TaggedSymbol)
125
- PAGO_EFECTIVO =
126
- T.let(:pago_efectivo, Dodopayments::PaymentMethodTypes::TaggedSymbol)
127
- PERMATA_BANK_TRANSFER =
128
- T.let(
129
- :permata_bank_transfer,
130
- Dodopayments::PaymentMethodTypes::TaggedSymbol
131
- )
132
- OPEN_BANKING_UK =
133
- T.let(:open_banking_uk, Dodopayments::PaymentMethodTypes::TaggedSymbol)
134
- PAY_BRIGHT =
135
- T.let(:pay_bright, Dodopayments::PaymentMethodTypes::TaggedSymbol)
136
- PAYPAL = T.let(:paypal, Dodopayments::PaymentMethodTypes::TaggedSymbol)
137
- PAZE = T.let(:paze, Dodopayments::PaymentMethodTypes::TaggedSymbol)
138
- PIX = T.let(:pix, Dodopayments::PaymentMethodTypes::TaggedSymbol)
139
- PAY_SAFE_CARD =
140
- T.let(:pay_safe_card, Dodopayments::PaymentMethodTypes::TaggedSymbol)
25
+ BANCONTACT_CARD =
26
+ T.let(:bancontact_card, Dodopayments::PaymentMethodTypes::TaggedSymbol)
27
+ EPS = T.let(:eps, Dodopayments::PaymentMethodTypes::TaggedSymbol)
28
+ IDEAL = T.let(:ideal, Dodopayments::PaymentMethodTypes::TaggedSymbol)
141
29
  PRZELEWY24 =
142
30
  T.let(:przelewy24, Dodopayments::PaymentMethodTypes::TaggedSymbol)
143
- PROMPT_PAY =
144
- T.let(:prompt_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
145
- PSE = T.let(:pse, Dodopayments::PaymentMethodTypes::TaggedSymbol)
146
- RED_COMPRA =
147
- T.let(:red_compra, Dodopayments::PaymentMethodTypes::TaggedSymbol)
148
- RED_PAGOS =
149
- T.let(:red_pagos, Dodopayments::PaymentMethodTypes::TaggedSymbol)
150
- SAMSUNG_PAY =
151
- T.let(:samsung_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
31
+ PAYPAL = T.let(:paypal, Dodopayments::PaymentMethodTypes::TaggedSymbol)
32
+ AFFIRM = T.let(:affirm, Dodopayments::PaymentMethodTypes::TaggedSymbol)
33
+ KLARNA = T.let(:klarna, Dodopayments::PaymentMethodTypes::TaggedSymbol)
152
34
  SEPA = T.let(:sepa, Dodopayments::PaymentMethodTypes::TaggedSymbol)
153
- SEPA_BANK_TRANSFER =
154
- T.let(
155
- :sepa_bank_transfer,
156
- Dodopayments::PaymentMethodTypes::TaggedSymbol
157
- )
158
- SOFORT = T.let(:sofort, Dodopayments::PaymentMethodTypes::TaggedSymbol)
159
- SWISH = T.let(:swish, Dodopayments::PaymentMethodTypes::TaggedSymbol)
160
- TOUCH_N_GO =
161
- T.let(:touch_n_go, Dodopayments::PaymentMethodTypes::TaggedSymbol)
162
- TRUSTLY = T.let(:trustly, Dodopayments::PaymentMethodTypes::TaggedSymbol)
163
- TWINT = T.let(:twint, Dodopayments::PaymentMethodTypes::TaggedSymbol)
164
- UPI_COLLECT =
165
- T.let(:upi_collect, Dodopayments::PaymentMethodTypes::TaggedSymbol)
166
- UPI_INTENT =
167
- T.let(:upi_intent, Dodopayments::PaymentMethodTypes::TaggedSymbol)
168
- VIPPS = T.let(:vipps, Dodopayments::PaymentMethodTypes::TaggedSymbol)
169
- VIET_QR = T.let(:viet_qr, Dodopayments::PaymentMethodTypes::TaggedSymbol)
170
- VENMO = T.let(:venmo, Dodopayments::PaymentMethodTypes::TaggedSymbol)
171
- WALLEY = T.let(:walley, Dodopayments::PaymentMethodTypes::TaggedSymbol)
172
- WE_CHAT_PAY =
173
- T.let(:we_chat_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
174
- SEVEN_ELEVEN =
175
- T.let(:seven_eleven, Dodopayments::PaymentMethodTypes::TaggedSymbol)
176
- LAWSON = T.let(:lawson, Dodopayments::PaymentMethodTypes::TaggedSymbol)
177
- MINI_STOP =
178
- T.let(:mini_stop, Dodopayments::PaymentMethodTypes::TaggedSymbol)
179
- FAMILY_MART =
180
- T.let(:family_mart, Dodopayments::PaymentMethodTypes::TaggedSymbol)
181
- SEICOMART =
182
- T.let(:seicomart, Dodopayments::PaymentMethodTypes::TaggedSymbol)
183
- PAY_EASY =
184
- T.let(:pay_easy, Dodopayments::PaymentMethodTypes::TaggedSymbol)
185
- LOCAL_BANK_TRANSFER =
186
- T.let(
187
- :local_bank_transfer,
188
- Dodopayments::PaymentMethodTypes::TaggedSymbol
189
- )
190
- MIFINITY =
191
- T.let(:mifinity, Dodopayments::PaymentMethodTypes::TaggedSymbol)
192
- OPEN_BANKING_PIS =
193
- T.let(:open_banking_pis, Dodopayments::PaymentMethodTypes::TaggedSymbol)
194
- DIRECT_CARRIER_BILLING =
195
- T.let(
196
- :direct_carrier_billing,
197
- Dodopayments::PaymentMethodTypes::TaggedSymbol
198
- )
199
- INSTANT_BANK_TRANSFER =
35
+ ACH = T.let(:ach, Dodopayments::PaymentMethodTypes::TaggedSymbol)
36
+ AMAZON_PAY =
37
+ T.let(:amazon_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
38
+ AFTERPAY_CLEARPAY =
200
39
  T.let(
201
- :instant_bank_transfer,
40
+ :afterpay_clearpay,
202
41
  Dodopayments::PaymentMethodTypes::TaggedSymbol
203
42
  )
204
- BILLIE = T.let(:billie, Dodopayments::PaymentMethodTypes::TaggedSymbol)
205
- ZIP = T.let(:zip, Dodopayments::PaymentMethodTypes::TaggedSymbol)
206
- REVOLUT_PAY =
207
- T.let(:revolut_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
208
- NAVER_PAY =
209
- T.let(:naver_pay, Dodopayments::PaymentMethodTypes::TaggedSymbol)
210
- PAYCO = T.let(:payco, Dodopayments::PaymentMethodTypes::TaggedSymbol)
211
43
 
212
44
  sig do
213
45
  override.returns(
@@ -94,6 +94,10 @@ module Dodopayments
94
94
  sig { returns(T.nilable(String)) }
95
95
  attr_accessor :name
96
96
 
97
+ # The product collection ID this product belongs to, if any
98
+ sig { returns(T.nilable(String)) }
99
+ attr_accessor :product_collection_id
100
+
97
101
  sig do
98
102
  params(
99
103
  brand_id: String,
@@ -120,7 +124,8 @@ module Dodopayments
120
124
  license_key_activations_limit: T.nilable(Integer),
121
125
  license_key_duration:
122
126
  T.nilable(Dodopayments::LicenseKeyDuration::OrHash),
123
- name: T.nilable(String)
127
+ name: T.nilable(String),
128
+ product_collection_id: T.nilable(String)
124
129
  ).returns(T.attached_class)
125
130
  end
126
131
  def self.new(
@@ -157,7 +162,9 @@ module Dodopayments
157
162
  # Duration of the license key validity, if enabled.
158
163
  license_key_duration: nil,
159
164
  # Name of the product, optional.
160
- name: nil
165
+ name: nil,
166
+ # The product collection ID this product belongs to, if any
167
+ product_collection_id: nil
161
168
  )
162
169
  end
163
170
 
@@ -182,7 +189,8 @@ module Dodopayments
182
189
  license_key_activation_message: T.nilable(String),
183
190
  license_key_activations_limit: T.nilable(Integer),
184
191
  license_key_duration: T.nilable(Dodopayments::LicenseKeyDuration),
185
- name: T.nilable(String)
192
+ name: T.nilable(String),
193
+ product_collection_id: T.nilable(String)
186
194
  }
187
195
  )
188
196
  end
@@ -110,6 +110,14 @@ module Dodopayments
110
110
  sig { returns(T.nilable(Time)) }
111
111
  attr_accessor :cancelled_at
112
112
 
113
+ # Customer's responses to custom fields collected during checkout
114
+ sig do
115
+ returns(
116
+ T.nilable(T::Array[Dodopayments::Subscription::CustomFieldResponse])
117
+ )
118
+ end
119
+ attr_accessor :custom_field_responses
120
+
113
121
  # Number of remaining discount cycles if discount is applied
114
122
  sig { returns(T.nilable(Integer)) }
115
123
  attr_accessor :discount_cycles_remaining
@@ -156,6 +164,10 @@ module Dodopayments
156
164
  tax_inclusive: T::Boolean,
157
165
  trial_period_days: Integer,
158
166
  cancelled_at: T.nilable(Time),
167
+ custom_field_responses:
168
+ T.nilable(
169
+ T::Array[Dodopayments::Subscription::CustomFieldResponse::OrHash]
170
+ ),
159
171
  discount_cycles_remaining: T.nilable(Integer),
160
172
  discount_id: T.nilable(String),
161
173
  expires_at: T.nilable(Time),
@@ -212,6 +224,8 @@ module Dodopayments
212
224
  trial_period_days:,
213
225
  # Cancelled timestamp if the subscription is cancelled
214
226
  cancelled_at: nil,
227
+ # Customer's responses to custom fields collected during checkout
228
+ custom_field_responses: nil,
215
229
  # Number of remaining discount cycles if discount is applied
216
230
  discount_cycles_remaining: nil,
217
231
  # The discount id if discount is applied
@@ -253,6 +267,10 @@ module Dodopayments
253
267
  tax_inclusive: T::Boolean,
254
268
  trial_period_days: Integer,
255
269
  cancelled_at: T.nilable(Time),
270
+ custom_field_responses:
271
+ T.nilable(
272
+ T::Array[Dodopayments::Subscription::CustomFieldResponse]
273
+ ),
256
274
  discount_cycles_remaining: T.nilable(Integer),
257
275
  discount_id: T.nilable(String),
258
276
  expires_at: T.nilable(Time),
@@ -333,6 +351,38 @@ module Dodopayments
333
351
  def to_hash
334
352
  end
335
353
  end
354
+
355
+ class CustomFieldResponse < Dodopayments::Internal::Type::BaseModel
356
+ OrHash =
357
+ T.type_alias do
358
+ T.any(
359
+ Dodopayments::Subscription::CustomFieldResponse,
360
+ Dodopayments::Internal::AnyHash
361
+ )
362
+ end
363
+
364
+ # Key matching the custom field definition
365
+ sig { returns(String) }
366
+ attr_accessor :key
367
+
368
+ # Value provided by customer
369
+ sig { returns(String) }
370
+ attr_accessor :value
371
+
372
+ # Customer's response to a custom field
373
+ sig { params(key: String, value: String).returns(T.attached_class) }
374
+ def self.new(
375
+ # Key matching the custom field definition
376
+ key:,
377
+ # Value provided by customer
378
+ value:
379
+ )
380
+ end
381
+
382
+ sig { override.returns({ key: String, value: String }) }
383
+ def to_hash
384
+ end
385
+ end
336
386
  end
337
387
  end
338
388
  end
@@ -35,6 +35,11 @@ module Dodopayments
35
35
  sig { returns(T.nilable(T::Array[Dodopayments::AttachAddon])) }
36
36
  attr_accessor :addons
37
37
 
38
+ # Metadata for the payment. If not passed, the metadata of the subscription will
39
+ # be taken
40
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
41
+ attr_accessor :metadata
42
+
38
43
  sig do
39
44
  params(
40
45
  product_id: String,
@@ -42,6 +47,7 @@ module Dodopayments
42
47
  Dodopayments::SubscriptionChangePlanParams::ProrationBillingMode::OrSymbol,
43
48
  quantity: Integer,
44
49
  addons: T.nilable(T::Array[Dodopayments::AttachAddon::OrHash]),
50
+ metadata: T.nilable(T::Hash[Symbol, String]),
45
51
  request_options: Dodopayments::RequestOptions::OrHash
46
52
  ).returns(T.attached_class)
47
53
  end
@@ -55,6 +61,9 @@ module Dodopayments
55
61
  # Addons for the new plan. Note : Leaving this empty would remove any existing
56
62
  # addons
57
63
  addons: nil,
64
+ # Metadata for the payment. If not passed, the metadata of the subscription will
65
+ # be taken
66
+ metadata: nil,
58
67
  request_options: {}
59
68
  )
60
69
  end
@@ -67,6 +76,7 @@ module Dodopayments
67
76
  Dodopayments::SubscriptionChangePlanParams::ProrationBillingMode::OrSymbol,
68
77
  quantity: Integer,
69
78
  addons: T.nilable(T::Array[Dodopayments::AttachAddon]),
79
+ metadata: T.nilable(T::Hash[Symbol, String]),
70
80
  request_options: Dodopayments::RequestOptions
71
81
  }
72
82
  )
@@ -117,6 +117,10 @@ module Dodopayments
117
117
  sig { returns(T.nilable(String)) }
118
118
  attr_accessor :payment_method_id
119
119
 
120
+ # Name of the product associated with this subscription
121
+ sig { returns(T.nilable(String)) }
122
+ attr_accessor :product_name
123
+
120
124
  # Tax identifier provided for this subscription (if applicable)
121
125
  sig { returns(T.nilable(String)) }
122
126
  attr_accessor :tax_id
@@ -148,6 +152,7 @@ module Dodopayments
148
152
  discount_cycles_remaining: T.nilable(Integer),
149
153
  discount_id: T.nilable(String),
150
154
  payment_method_id: T.nilable(String),
155
+ product_name: T.nilable(String),
151
156
  tax_id: T.nilable(String)
152
157
  ).returns(T.attached_class)
153
158
  end
@@ -202,6 +207,8 @@ module Dodopayments
202
207
  discount_id: nil,
203
208
  # Saved payment method id used for recurring charges
204
209
  payment_method_id: nil,
210
+ # Name of the product associated with this subscription
211
+ product_name: nil,
205
212
  # Tax identifier provided for this subscription (if applicable)
206
213
  tax_id: nil
207
214
  )
@@ -236,6 +243,7 @@ module Dodopayments
236
243
  discount_cycles_remaining: T.nilable(Integer),
237
244
  discount_id: T.nilable(String),
238
245
  payment_method_id: T.nilable(String),
246
+ product_name: T.nilable(String),
239
247
  tax_id: T.nilable(String)
240
248
  }
241
249
  )
@@ -35,6 +35,11 @@ module Dodopayments
35
35
  sig { returns(T.nilable(T::Array[Dodopayments::AttachAddon])) }
36
36
  attr_accessor :addons
37
37
 
38
+ # Metadata for the payment. If not passed, the metadata of the subscription will
39
+ # be taken
40
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
41
+ attr_accessor :metadata
42
+
38
43
  sig do
39
44
  params(
40
45
  product_id: String,
@@ -42,6 +47,7 @@ module Dodopayments
42
47
  Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::OrSymbol,
43
48
  quantity: Integer,
44
49
  addons: T.nilable(T::Array[Dodopayments::AttachAddon::OrHash]),
50
+ metadata: T.nilable(T::Hash[Symbol, String]),
45
51
  request_options: Dodopayments::RequestOptions::OrHash
46
52
  ).returns(T.attached_class)
47
53
  end
@@ -55,6 +61,9 @@ module Dodopayments
55
61
  # Addons for the new plan. Note : Leaving this empty would remove any existing
56
62
  # addons
57
63
  addons: nil,
64
+ # Metadata for the payment. If not passed, the metadata of the subscription will
65
+ # be taken
66
+ metadata: nil,
58
67
  request_options: {}
59
68
  )
60
69
  end
@@ -67,6 +76,7 @@ module Dodopayments
67
76
  Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::OrSymbol,
68
77
  quantity: Integer,
69
78
  addons: T.nilable(T::Array[Dodopayments::AttachAddon]),
79
+ metadata: T.nilable(T::Hash[Symbol, String]),
70
80
  request_options: Dodopayments::RequestOptions
71
81
  }
72
82
  )
@@ -38,6 +38,9 @@ module Dodopayments
38
38
  CheckoutSessionCreateParams =
39
39
  Dodopayments::Models::CheckoutSessionCreateParams
40
40
 
41
+ CheckoutSessionPreviewParams =
42
+ Dodopayments::Models::CheckoutSessionPreviewParams
43
+
41
44
  CheckoutSessionRequest = Dodopayments::Models::CheckoutSessionRequest
42
45
 
43
46
  CheckoutSessionResponse = Dodopayments::Models::CheckoutSessionResponse
@@ -82,6 +85,9 @@ module Dodopayments
82
85
 
83
86
  DiscountListParams = Dodopayments::Models::DiscountListParams
84
87
 
88
+ DiscountRetrieveByCodeParams =
89
+ Dodopayments::Models::DiscountRetrieveByCodeParams
90
+
85
91
  DiscountRetrieveParams = Dodopayments::Models::DiscountRetrieveParams
86
92
 
87
93
  DiscountType = Dodopayments::Models::DiscountType
@@ -15,6 +15,12 @@ module Dodopayments
15
15
  ),
16
16
  billing_currency: T.nilable(Dodopayments::Currency::OrSymbol),
17
17
  confirm: T::Boolean,
18
+ custom_fields:
19
+ T.nilable(
20
+ T::Array[
21
+ Dodopayments::CheckoutSessionRequest::CustomField::OrHash
22
+ ]
23
+ ),
18
24
  customer:
19
25
  T.nilable(
20
26
  T.any(
@@ -31,6 +37,7 @@ module Dodopayments
31
37
  metadata: T.nilable(T::Hash[Symbol, String]),
32
38
  minimal_address: T::Boolean,
33
39
  payment_method_id: T.nilable(String),
40
+ product_collection_id: T.nilable(String),
34
41
  return_url: T.nilable(String),
35
42
  short_link: T::Boolean,
36
43
  show_saved_payment_methods: T::Boolean,
@@ -57,6 +64,8 @@ module Dodopayments
57
64
  # If confirm is true, all the details will be finalized. If required data is
58
65
  # missing, an API error is thrown.
59
66
  confirm: nil,
67
+ # Custom fields to collect from customer during checkout (max 5 fields)
68
+ custom_fields: nil,
60
69
  # Customer details for the session
61
70
  customer: nil,
62
71
  # Customization for the checkout session page
@@ -74,6 +83,8 @@ module Dodopayments
74
83
  # Optional payment method ID to use for this checkout session. Only allowed when
75
84
  # `confirm` is true. If provided, existing customer id must also be provided.
76
85
  payment_method_id: nil,
86
+ # Product collection ID for collection-based checkout flow
87
+ product_collection_id: nil,
77
88
  # The url to redirect after payment failure or success.
78
89
  return_url: nil,
79
90
  # If true, returns a shortened checkout URL. Defaults to false if not specified.
@@ -94,6 +105,99 @@ module Dodopayments
94
105
  def retrieve(id, request_options: {})
95
106
  end
96
107
 
108
+ sig do
109
+ params(
110
+ product_cart:
111
+ T::Array[Dodopayments::CheckoutSessionRequest::ProductCart::OrHash],
112
+ allowed_payment_method_types:
113
+ T.nilable(T::Array[Dodopayments::PaymentMethodTypes::OrSymbol]),
114
+ billing_address:
115
+ T.nilable(
116
+ Dodopayments::CheckoutSessionRequest::BillingAddress::OrHash
117
+ ),
118
+ billing_currency: T.nilable(Dodopayments::Currency::OrSymbol),
119
+ confirm: T::Boolean,
120
+ custom_fields:
121
+ T.nilable(
122
+ T::Array[
123
+ Dodopayments::CheckoutSessionRequest::CustomField::OrHash
124
+ ]
125
+ ),
126
+ customer:
127
+ T.nilable(
128
+ T.any(
129
+ Dodopayments::AttachExistingCustomer::OrHash,
130
+ Dodopayments::NewCustomer::OrHash
131
+ )
132
+ ),
133
+ customization:
134
+ Dodopayments::CheckoutSessionRequest::Customization::OrHash,
135
+ discount_code: T.nilable(String),
136
+ feature_flags:
137
+ Dodopayments::CheckoutSessionRequest::FeatureFlags::OrHash,
138
+ force_3ds: T.nilable(T::Boolean),
139
+ metadata: T.nilable(T::Hash[Symbol, String]),
140
+ minimal_address: T::Boolean,
141
+ payment_method_id: T.nilable(String),
142
+ product_collection_id: T.nilable(String),
143
+ return_url: T.nilable(String),
144
+ short_link: T::Boolean,
145
+ show_saved_payment_methods: T::Boolean,
146
+ subscription_data:
147
+ T.nilable(
148
+ Dodopayments::CheckoutSessionRequest::SubscriptionData::OrHash
149
+ ),
150
+ request_options: Dodopayments::RequestOptions::OrHash
151
+ ).returns(Dodopayments::Models::CheckoutSessionPreviewResponse)
152
+ end
153
+ def preview(
154
+ product_cart:,
155
+ # Customers will never see payment methods that are not in this list. However,
156
+ # adding a method here does not guarantee customers will see it. Availability
157
+ # still depends on other factors (e.g., customer location, merchant settings).
158
+ #
159
+ # Disclaimar: Always provide 'credit' and 'debit' as a fallback. If all payment
160
+ # methods are unavailable, checkout session will fail.
161
+ allowed_payment_method_types: nil,
162
+ # Billing address information for the session
163
+ billing_address: nil,
164
+ # This field is ingored if adaptive pricing is disabled
165
+ billing_currency: nil,
166
+ # If confirm is true, all the details will be finalized. If required data is
167
+ # missing, an API error is thrown.
168
+ confirm: nil,
169
+ # Custom fields to collect from customer during checkout (max 5 fields)
170
+ custom_fields: nil,
171
+ # Customer details for the session
172
+ customer: nil,
173
+ # Customization for the checkout session page
174
+ customization: nil,
175
+ discount_code: nil,
176
+ feature_flags: nil,
177
+ # Override merchant default 3DS behaviour for this session
178
+ force_3ds: nil,
179
+ # Additional metadata associated with the payment. Defaults to empty if not
180
+ # provided.
181
+ metadata: nil,
182
+ # If true, only zipcode is required when confirm is true; other address fields
183
+ # remain optional
184
+ minimal_address: nil,
185
+ # Optional payment method ID to use for this checkout session. Only allowed when
186
+ # `confirm` is true. If provided, existing customer id must also be provided.
187
+ payment_method_id: nil,
188
+ # Product collection ID for collection-based checkout flow
189
+ product_collection_id: nil,
190
+ # The url to redirect after payment failure or success.
191
+ return_url: nil,
192
+ # If true, returns a shortened checkout URL. Defaults to false if not specified.
193
+ short_link: nil,
194
+ # Display saved payment methods of a returning customer False by default
195
+ show_saved_payment_methods: nil,
196
+ subscription_data: nil,
197
+ request_options: {}
198
+ )
199
+ end
200
+
97
201
  # @api private
98
202
  sig { params(client: Dodopayments::Client).returns(T.attached_class) }
99
203
  def self.new(client:)
@@ -63,7 +63,10 @@ module Dodopayments
63
63
 
64
64
  sig do
65
65
  params(
66
+ created_at_gte: Time,
67
+ created_at_lte: Time,
66
68
  email: String,
69
+ name: String,
67
70
  page_number: Integer,
68
71
  page_size: Integer,
69
72
  request_options: Dodopayments::RequestOptions::OrHash
@@ -74,8 +77,14 @@ module Dodopayments
74
77
  )
75
78
  end
76
79
  def list(
80
+ # Filter customers created on or after this timestamp
81
+ created_at_gte: nil,
82
+ # Filter customers created on or before this timestamp
83
+ created_at_lte: nil,
77
84
  # Filter by customer email
78
85
  email: nil,
86
+ # Filter by customer name (partial match, case-insensitive)
87
+ name: nil,
79
88
  # Page number default is 0
80
89
  page_number: nil,
81
90
  # Page size default is 10 max is 100