dodopayments 1.71.1 → 1.73.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -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 +9 -1
  7. data/lib/dodopayments/models/discount_retrieve_by_code_params.rb +14 -0
  8. data/lib/dodopayments/models/payment.rb +9 -1
  9. data/lib/dodopayments/models/payment_method_types.rb +13 -98
  10. data/lib/dodopayments/models/product.rb +9 -1
  11. data/lib/dodopayments/models/subscription_change_plan_params.rb +10 -1
  12. data/lib/dodopayments/models/subscription_preview_change_plan_params.rb +10 -1
  13. data/lib/dodopayments/models.rb +4 -0
  14. data/lib/dodopayments/resources/checkout_sessions.rb +60 -1
  15. data/lib/dodopayments/resources/discounts.rb +22 -0
  16. data/lib/dodopayments/resources/subscriptions.rb +6 -2
  17. data/lib/dodopayments/version.rb +1 -1
  18. data/lib/dodopayments.rb +3 -0
  19. data/rbi/dodopayments/models/checkout_session_preview_params.rbi +32 -0
  20. data/rbi/dodopayments/models/checkout_session_preview_response.rbi +616 -0
  21. data/rbi/dodopayments/models/checkout_session_request.rbi +8 -0
  22. data/rbi/dodopayments/models/discount_retrieve_by_code_params.rbi +32 -0
  23. data/rbi/dodopayments/models/payment.rbi +8 -0
  24. data/rbi/dodopayments/models/payment_method_types.rbi +18 -186
  25. data/rbi/dodopayments/models/product.rbi +11 -3
  26. data/rbi/dodopayments/models/subscription_change_plan_params.rbi +10 -0
  27. data/rbi/dodopayments/models/subscription_preview_change_plan_params.rbi +10 -0
  28. data/rbi/dodopayments/models.rbi +6 -0
  29. data/rbi/dodopayments/resources/checkout_sessions.rbi +88 -0
  30. data/rbi/dodopayments/resources/discounts.rbi +16 -0
  31. data/rbi/dodopayments/resources/subscriptions.rbi +8 -0
  32. data/sig/dodopayments/models/checkout_session_preview_params.rbs +15 -0
  33. data/sig/dodopayments/models/checkout_session_preview_response.rbs +330 -0
  34. data/sig/dodopayments/models/checkout_session_request.rbs +5 -0
  35. data/sig/dodopayments/models/discount_retrieve_by_code_params.rbs +15 -0
  36. data/sig/dodopayments/models/payment.rbs +5 -0
  37. data/sig/dodopayments/models/payment_method_types.rbs +26 -196
  38. data/sig/dodopayments/models/product.rbs +8 -3
  39. data/sig/dodopayments/models/subscription_change_plan_params.rbs +6 -1
  40. data/sig/dodopayments/models/subscription_preview_change_plan_params.rbs +6 -1
  41. data/sig/dodopayments/models.rbs +4 -0
  42. data/sig/dodopayments/resources/checkout_sessions.rbs +23 -0
  43. data/sig/dodopayments/resources/discounts.rbs +5 -0
  44. data/sig/dodopayments/resources/subscriptions.rbs +2 -0
  45. 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
@@ -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
  )
@@ -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
@@ -31,6 +31,7 @@ module Dodopayments
31
31
  metadata: T.nilable(T::Hash[Symbol, String]),
32
32
  minimal_address: T::Boolean,
33
33
  payment_method_id: T.nilable(String),
34
+ product_collection_id: T.nilable(String),
34
35
  return_url: T.nilable(String),
35
36
  short_link: T::Boolean,
36
37
  show_saved_payment_methods: T::Boolean,
@@ -74,6 +75,8 @@ module Dodopayments
74
75
  # Optional payment method ID to use for this checkout session. Only allowed when
75
76
  # `confirm` is true. If provided, existing customer id must also be provided.
76
77
  payment_method_id: nil,
78
+ # Product collection ID for collection-based checkout flow
79
+ product_collection_id: nil,
77
80
  # The url to redirect after payment failure or success.
78
81
  return_url: nil,
79
82
  # If true, returns a shortened checkout URL. Defaults to false if not specified.
@@ -94,6 +97,91 @@ module Dodopayments
94
97
  def retrieve(id, request_options: {})
95
98
  end
96
99
 
100
+ sig do
101
+ params(
102
+ product_cart:
103
+ T::Array[Dodopayments::CheckoutSessionRequest::ProductCart::OrHash],
104
+ allowed_payment_method_types:
105
+ T.nilable(T::Array[Dodopayments::PaymentMethodTypes::OrSymbol]),
106
+ billing_address:
107
+ T.nilable(
108
+ Dodopayments::CheckoutSessionRequest::BillingAddress::OrHash
109
+ ),
110
+ billing_currency: T.nilable(Dodopayments::Currency::OrSymbol),
111
+ confirm: T::Boolean,
112
+ customer:
113
+ T.nilable(
114
+ T.any(
115
+ Dodopayments::AttachExistingCustomer::OrHash,
116
+ Dodopayments::NewCustomer::OrHash
117
+ )
118
+ ),
119
+ customization:
120
+ Dodopayments::CheckoutSessionRequest::Customization::OrHash,
121
+ discount_code: T.nilable(String),
122
+ feature_flags:
123
+ Dodopayments::CheckoutSessionRequest::FeatureFlags::OrHash,
124
+ force_3ds: T.nilable(T::Boolean),
125
+ metadata: T.nilable(T::Hash[Symbol, String]),
126
+ minimal_address: T::Boolean,
127
+ payment_method_id: T.nilable(String),
128
+ product_collection_id: T.nilable(String),
129
+ return_url: T.nilable(String),
130
+ short_link: T::Boolean,
131
+ show_saved_payment_methods: T::Boolean,
132
+ subscription_data:
133
+ T.nilable(
134
+ Dodopayments::CheckoutSessionRequest::SubscriptionData::OrHash
135
+ ),
136
+ request_options: Dodopayments::RequestOptions::OrHash
137
+ ).returns(Dodopayments::Models::CheckoutSessionPreviewResponse)
138
+ end
139
+ def preview(
140
+ product_cart:,
141
+ # Customers will never see payment methods that are not in this list. However,
142
+ # adding a method here does not guarantee customers will see it. Availability
143
+ # still depends on other factors (e.g., customer location, merchant settings).
144
+ #
145
+ # Disclaimar: Always provide 'credit' and 'debit' as a fallback. If all payment
146
+ # methods are unavailable, checkout session will fail.
147
+ allowed_payment_method_types: nil,
148
+ # Billing address information for the session
149
+ billing_address: nil,
150
+ # This field is ingored if adaptive pricing is disabled
151
+ billing_currency: nil,
152
+ # If confirm is true, all the details will be finalized. If required data is
153
+ # missing, an API error is thrown.
154
+ confirm: nil,
155
+ # Customer details for the session
156
+ customer: nil,
157
+ # Customization for the checkout session page
158
+ customization: nil,
159
+ discount_code: nil,
160
+ feature_flags: nil,
161
+ # Override merchant default 3DS behaviour for this session
162
+ force_3ds: nil,
163
+ # Additional metadata associated with the payment. Defaults to empty if not
164
+ # provided.
165
+ metadata: nil,
166
+ # If true, only zipcode is required when confirm is true; other address fields
167
+ # remain optional
168
+ minimal_address: nil,
169
+ # Optional payment method ID to use for this checkout session. Only allowed when
170
+ # `confirm` is true. If provided, existing customer id must also be provided.
171
+ payment_method_id: nil,
172
+ # Product collection ID for collection-based checkout flow
173
+ product_collection_id: nil,
174
+ # The url to redirect after payment failure or success.
175
+ return_url: nil,
176
+ # If true, returns a shortened checkout URL. Defaults to false if not specified.
177
+ short_link: nil,
178
+ # Display saved payment methods of a returning customer False by default
179
+ show_saved_payment_methods: nil,
180
+ subscription_data: nil,
181
+ request_options: {}
182
+ )
183
+ end
184
+
97
185
  # @api private
98
186
  sig { params(client: Dodopayments::Client).returns(T.attached_class) }
99
187
  def self.new(client:)
@@ -143,6 +143,22 @@ module Dodopayments
143
143
  )
144
144
  end
145
145
 
146
+ # Validate and fetch a discount by its code name (e.g., "SAVE20"). This allows
147
+ # real-time validation directly against the API using the human-readable discount
148
+ # code instead of requiring the internal discount_id.
149
+ sig do
150
+ params(
151
+ code: String,
152
+ request_options: Dodopayments::RequestOptions::OrHash
153
+ ).returns(Dodopayments::Discount)
154
+ end
155
+ def retrieve_by_code(
156
+ # The discount code (e.g., 'SAVE20')
157
+ code,
158
+ request_options: {}
159
+ )
160
+ end
161
+
146
162
  # @api private
147
163
  sig { params(client: Dodopayments::Client).returns(T.attached_class) }
148
164
  def self.new(client:)
@@ -179,6 +179,7 @@ module Dodopayments
179
179
  Dodopayments::SubscriptionChangePlanParams::ProrationBillingMode::OrSymbol,
180
180
  quantity: Integer,
181
181
  addons: T.nilable(T::Array[Dodopayments::AttachAddon::OrHash]),
182
+ metadata: T.nilable(T::Hash[Symbol, String]),
182
183
  request_options: Dodopayments::RequestOptions::OrHash
183
184
  ).void
184
185
  end
@@ -194,6 +195,9 @@ module Dodopayments
194
195
  # Addons for the new plan. Note : Leaving this empty would remove any existing
195
196
  # addons
196
197
  addons: nil,
198
+ # Metadata for the payment. If not passed, the metadata of the subscription will
199
+ # be taken
200
+ metadata: nil,
197
201
  request_options: {}
198
202
  )
199
203
  end
@@ -246,6 +250,7 @@ module Dodopayments
246
250
  Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::OrSymbol,
247
251
  quantity: Integer,
248
252
  addons: T.nilable(T::Array[Dodopayments::AttachAddon::OrHash]),
253
+ metadata: T.nilable(T::Hash[Symbol, String]),
249
254
  request_options: Dodopayments::RequestOptions::OrHash
250
255
  ).returns(Dodopayments::Models::SubscriptionPreviewChangePlanResponse)
251
256
  end
@@ -261,6 +266,9 @@ module Dodopayments
261
266
  # Addons for the new plan. Note : Leaving this empty would remove any existing
262
267
  # addons
263
268
  addons: nil,
269
+ # Metadata for the payment. If not passed, the metadata of the subscription will
270
+ # be taken
271
+ metadata: nil,
264
272
  request_options: {}
265
273
  )
266
274
  end
@@ -0,0 +1,15 @@
1
+ module Dodopayments
2
+ module Models
3
+ type checkout_session_preview_params =
4
+ { } & Dodopayments::Internal::Type::request_parameters
5
+
6
+ class CheckoutSessionPreviewParams < Dodopayments::Models::CheckoutSessionRequest
7
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
8
+ include Dodopayments::Internal::Type::RequestParameters
9
+
10
+ def initialize: (?request_options: Dodopayments::request_opts) -> void
11
+
12
+ def to_hash: -> { request_options: Dodopayments::RequestOptions }
13
+ end
14
+ end
15
+ end