dodopayments 1.61.7 → 1.66.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/models/billing_address.rb +18 -18
  5. data/lib/dodopayments/models/checkout_session_request.rb +10 -1
  6. data/lib/dodopayments/models/subscription_preview_change_plan_params.rb +63 -0
  7. data/lib/dodopayments/models/subscription_preview_change_plan_response.rb +388 -0
  8. data/lib/dodopayments/models/subscription_updated_webhook_event.rb +76 -0
  9. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +3 -1
  10. data/lib/dodopayments/models/unwrap_webhook_event.rb +3 -1
  11. data/lib/dodopayments/models/webhook_event_type.rb +1 -0
  12. data/lib/dodopayments/models.rb +4 -0
  13. data/lib/dodopayments/resources/checkout_sessions.rb +3 -1
  14. data/lib/dodopayments/resources/subscriptions.rb +31 -0
  15. data/lib/dodopayments/resources/webhooks.rb +2 -2
  16. data/lib/dodopayments/version.rb +1 -1
  17. data/lib/dodopayments.rb +4 -0
  18. data/rbi/dodopayments/models/billing_address.rbi +20 -20
  19. data/rbi/dodopayments/models/checkout_session_request.rbi +13 -0
  20. data/rbi/dodopayments/models/subscription_preview_change_plan_params.rbi +118 -0
  21. data/rbi/dodopayments/models/subscription_preview_change_plan_response.rbi +633 -0
  22. data/rbi/dodopayments/models/subscription_updated_webhook_event.rbi +185 -0
  23. data/rbi/dodopayments/models/unsafe_unwrap_webhook_event.rbi +2 -1
  24. data/rbi/dodopayments/models/unwrap_webhook_event.rbi +2 -1
  25. data/rbi/dodopayments/models/webhook_event_type.rbi +5 -0
  26. data/rbi/dodopayments/models.rbi +6 -0
  27. data/rbi/dodopayments/resources/checkout_sessions.rbi +4 -0
  28. data/rbi/dodopayments/resources/subscriptions.rbi +27 -0
  29. data/rbi/dodopayments/resources/webhooks.rbi +4 -2
  30. data/sig/dodopayments/models/billing_address.rbs +17 -17
  31. data/sig/dodopayments/models/checkout_session_request.rbs +7 -0
  32. data/sig/dodopayments/models/subscription_preview_change_plan_params.rbs +54 -0
  33. data/sig/dodopayments/models/subscription_preview_change_plan_response.rbs +356 -0
  34. data/sig/dodopayments/models/subscription_updated_webhook_event.rbs +76 -0
  35. data/sig/dodopayments/models/unsafe_unwrap_webhook_event.rbs +1 -0
  36. data/sig/dodopayments/models/unwrap_webhook_event.rbs +1 -0
  37. data/sig/dodopayments/models/webhook_event_type.rbs +2 -0
  38. data/sig/dodopayments/models.rbs +4 -0
  39. data/sig/dodopayments/resources/checkout_sessions.rbs +1 -0
  40. data/sig/dodopayments/resources/subscriptions.rbs +9 -0
  41. data/sig/dodopayments/resources/webhooks.rbs +4 -2
  42. metadata +10 -1
@@ -47,8 +47,10 @@ module Dodopayments
47
47
 
48
48
  variant -> { Dodopayments::SubscriptionRenewedWebhookEvent }
49
49
 
50
+ variant -> { Dodopayments::SubscriptionUpdatedWebhookEvent }
51
+
50
52
  # @!method self.variants
51
- # @return [Array(Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent)]
53
+ # @return [Array(Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
52
54
  end
53
55
  end
54
56
  end
@@ -26,6 +26,7 @@ module Dodopayments
26
26
  SUBSCRIPTION_FAILED = :"subscription.failed"
27
27
  SUBSCRIPTION_EXPIRED = :"subscription.expired"
28
28
  SUBSCRIPTION_PLAN_CHANGED = :"subscription.plan_changed"
29
+ SUBSCRIPTION_UPDATED = :"subscription.updated"
29
30
  LICENSE_KEY_CREATED = :"license_key.created"
30
31
 
31
32
  # @!method self.values
@@ -287,6 +287,8 @@ module Dodopayments
287
287
 
288
288
  SubscriptionPlanChangedWebhookEvent = Dodopayments::Models::SubscriptionPlanChangedWebhookEvent
289
289
 
290
+ SubscriptionPreviewChangePlanParams = Dodopayments::Models::SubscriptionPreviewChangePlanParams
291
+
290
292
  SubscriptionRenewedWebhookEvent = Dodopayments::Models::SubscriptionRenewedWebhookEvent
291
293
 
292
294
  SubscriptionRetrieveParams = Dodopayments::Models::SubscriptionRetrieveParams
@@ -295,6 +297,8 @@ module Dodopayments
295
297
 
296
298
  SubscriptionStatus = Dodopayments::Models::SubscriptionStatus
297
299
 
300
+ SubscriptionUpdatedWebhookEvent = Dodopayments::Models::SubscriptionUpdatedWebhookEvent
301
+
298
302
  SubscriptionUpdateParams = Dodopayments::Models::SubscriptionUpdateParams
299
303
 
300
304
  SubscriptionUpdatePaymentMethodParams = Dodopayments::Models::SubscriptionUpdatePaymentMethodParams
@@ -6,7 +6,7 @@ module Dodopayments
6
6
  # Some parameter documentations has been truncated, see
7
7
  # {Dodopayments::Models::CheckoutSessionCreateParams} for more details.
8
8
  #
9
- # @overload create(product_cart:, allowed_payment_method_types: nil, billing_address: nil, billing_currency: nil, confirm: nil, customer: nil, customization: nil, discount_code: nil, feature_flags: nil, force_3ds: nil, metadata: nil, return_url: nil, show_saved_payment_methods: nil, subscription_data: nil, request_options: {})
9
+ # @overload create(product_cart:, allowed_payment_method_types: nil, billing_address: nil, billing_currency: nil, confirm: nil, customer: nil, customization: nil, discount_code: nil, feature_flags: nil, force_3ds: nil, metadata: nil, minimal_address: nil, return_url: nil, show_saved_payment_methods: nil, subscription_data: nil, request_options: {})
10
10
  #
11
11
  # @param product_cart [Array<Dodopayments::Models::CheckoutSessionRequest::ProductCart>]
12
12
  #
@@ -30,6 +30,8 @@ module Dodopayments
30
30
  #
31
31
  # @param metadata [Hash{Symbol=>String}, nil] Additional metadata associated with the payment. Defaults to empty if not provid
32
32
  #
33
+ # @param minimal_address [Boolean] If true, only zipcode is required when confirm is true; other address fields rem
34
+ #
33
35
  # @param return_url [String, nil] The url to redirect after payment failure or success.
34
36
  #
35
37
  # @param show_saved_payment_methods [Boolean] Display saved payment methods of a returning customer False by default
@@ -209,6 +209,37 @@ module Dodopayments
209
209
  )
210
210
  end
211
211
 
212
+ # Some parameter documentations has been truncated, see
213
+ # {Dodopayments::Models::SubscriptionPreviewChangePlanParams} for more details.
214
+ #
215
+ # @overload preview_change_plan(subscription_id, product_id:, proration_billing_mode:, quantity:, addons: nil, request_options: {})
216
+ #
217
+ # @param subscription_id [String] Subscription Id
218
+ #
219
+ # @param product_id [String] Unique identifier of the product to subscribe to
220
+ #
221
+ # @param proration_billing_mode [Symbol, Dodopayments::Models::SubscriptionPreviewChangePlanParams::ProrationBillingMode] Proration Billing Mode
222
+ #
223
+ # @param quantity [Integer] Number of units to subscribe for. Must be at least 1.
224
+ #
225
+ # @param addons [Array<Dodopayments::Models::AttachAddon>, nil] Addons for the new plan.
226
+ #
227
+ # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}, nil]
228
+ #
229
+ # @return [Dodopayments::Models::SubscriptionPreviewChangePlanResponse]
230
+ #
231
+ # @see Dodopayments::Models::SubscriptionPreviewChangePlanParams
232
+ def preview_change_plan(subscription_id, params)
233
+ parsed, options = Dodopayments::SubscriptionPreviewChangePlanParams.dump_request(params)
234
+ @client.request(
235
+ method: :post,
236
+ path: ["subscriptions/%1$s/change-plan/preview", subscription_id],
237
+ body: parsed,
238
+ model: Dodopayments::Models::SubscriptionPreviewChangePlanResponse,
239
+ options: options
240
+ )
241
+ end
242
+
212
243
  # Get detailed usage history for a subscription that includes usage-based billing
213
244
  # (metered components). This endpoint provides insights into customer usage
214
245
  # patterns and billing calculations over time.
@@ -166,7 +166,7 @@ module Dodopayments
166
166
 
167
167
  # @param payload [String] The raw webhook payload as a string
168
168
  #
169
- # @return [Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent]
169
+ # @return [Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent]
170
170
  def unsafe_unwrap(payload)
171
171
  parsed = JSON.parse(payload, symbolize_names: true)
172
172
  Dodopayments::Internal::Type::Converter.coerce(Dodopayments::Models::UnsafeUnwrapWebhookEvent, parsed)
@@ -174,7 +174,7 @@ module Dodopayments
174
174
 
175
175
  # @param payload [String] The raw webhook payload as a string
176
176
  #
177
- # @return [Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent]
177
+ # @return [Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent]
178
178
  def unwrap(payload)
179
179
  parsed = JSON.parse(payload, symbolize_names: true)
180
180
  Dodopayments::Internal::Type::Converter.coerce(Dodopayments::Models::UnwrapWebhookEvent, parsed)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dodopayments
4
- VERSION = "1.61.7"
4
+ VERSION = "1.66.0"
5
5
  end
data/lib/dodopayments.rb CHANGED
@@ -224,12 +224,16 @@ require_relative "dodopayments/models/subscription_on_hold_webhook_event"
224
224
  require_relative "dodopayments/models/subscription_on_hold_webhook_event"
225
225
  require_relative "dodopayments/models/subscription_plan_changed_webhook_event"
226
226
  require_relative "dodopayments/models/subscription_plan_changed_webhook_event"
227
+ require_relative "dodopayments/models/subscription_preview_change_plan_params"
228
+ require_relative "dodopayments/models/subscription_preview_change_plan_response"
227
229
  require_relative "dodopayments/models/subscription_renewed_webhook_event"
228
230
  require_relative "dodopayments/models/subscription_renewed_webhook_event"
229
231
  require_relative "dodopayments/models/subscription_retrieve_params"
230
232
  require_relative "dodopayments/models/subscription_retrieve_usage_history_params"
231
233
  require_relative "dodopayments/models/subscription_retrieve_usage_history_response"
232
234
  require_relative "dodopayments/models/subscription_status"
235
+ require_relative "dodopayments/models/subscription_updated_webhook_event"
236
+ require_relative "dodopayments/models/subscription_updated_webhook_event"
233
237
  require_relative "dodopayments/models/subscription_update_params"
234
238
  require_relative "dodopayments/models/subscription_update_payment_method_params"
235
239
  require_relative "dodopayments/models/subscription_update_payment_method_response"
@@ -8,57 +8,57 @@ module Dodopayments
8
8
  T.any(Dodopayments::BillingAddress, Dodopayments::Internal::AnyHash)
9
9
  end
10
10
 
11
- # City name
12
- sig { returns(String) }
13
- attr_accessor :city
14
-
15
11
  # Two-letter ISO country code (ISO 3166-1 alpha-2)
16
12
  sig { returns(Dodopayments::CountryCode::OrSymbol) }
17
13
  attr_accessor :country
18
14
 
15
+ # City name
16
+ sig { returns(T.nilable(String)) }
17
+ attr_accessor :city
18
+
19
19
  # State or province name
20
- sig { returns(String) }
20
+ sig { returns(T.nilable(String)) }
21
21
  attr_accessor :state
22
22
 
23
23
  # Street address including house number and unit/apartment if applicable
24
- sig { returns(String) }
24
+ sig { returns(T.nilable(String)) }
25
25
  attr_accessor :street
26
26
 
27
27
  # Postal code or ZIP code
28
- sig { returns(String) }
28
+ sig { returns(T.nilable(String)) }
29
29
  attr_accessor :zipcode
30
30
 
31
31
  sig do
32
32
  params(
33
- city: String,
34
33
  country: Dodopayments::CountryCode::OrSymbol,
35
- state: String,
36
- street: String,
37
- zipcode: String
34
+ city: T.nilable(String),
35
+ state: T.nilable(String),
36
+ street: T.nilable(String),
37
+ zipcode: T.nilable(String)
38
38
  ).returns(T.attached_class)
39
39
  end
40
40
  def self.new(
41
- # City name
42
- city:,
43
41
  # Two-letter ISO country code (ISO 3166-1 alpha-2)
44
42
  country:,
43
+ # City name
44
+ city: nil,
45
45
  # State or province name
46
- state:,
46
+ state: nil,
47
47
  # Street address including house number and unit/apartment if applicable
48
- street:,
48
+ street: nil,
49
49
  # Postal code or ZIP code
50
- zipcode:
50
+ zipcode: nil
51
51
  )
52
52
  end
53
53
 
54
54
  sig do
55
55
  override.returns(
56
56
  {
57
- city: String,
58
57
  country: Dodopayments::CountryCode::OrSymbol,
59
- state: String,
60
- street: String,
61
- zipcode: String
58
+ city: T.nilable(String),
59
+ state: T.nilable(String),
60
+ street: T.nilable(String),
61
+ zipcode: T.nilable(String)
62
62
  }
63
63
  )
64
64
  end
@@ -107,6 +107,14 @@ module Dodopayments
107
107
  sig { returns(T.nilable(T::Hash[Symbol, String])) }
108
108
  attr_accessor :metadata
109
109
 
110
+ # If true, only zipcode is required when confirm is true; other address fields
111
+ # remain optional
112
+ sig { returns(T.nilable(T::Boolean)) }
113
+ attr_reader :minimal_address
114
+
115
+ sig { params(minimal_address: T::Boolean).void }
116
+ attr_writer :minimal_address
117
+
110
118
  # The url to redirect after payment failure or success.
111
119
  sig { returns(T.nilable(String)) }
112
120
  attr_accessor :return_url
@@ -161,6 +169,7 @@ module Dodopayments
161
169
  Dodopayments::CheckoutSessionRequest::FeatureFlags::OrHash,
162
170
  force_3ds: T.nilable(T::Boolean),
163
171
  metadata: T.nilable(T::Hash[Symbol, String]),
172
+ minimal_address: T::Boolean,
164
173
  return_url: T.nilable(String),
165
174
  show_saved_payment_methods: T::Boolean,
166
175
  subscription_data:
@@ -196,6 +205,9 @@ module Dodopayments
196
205
  # Additional metadata associated with the payment. Defaults to empty if not
197
206
  # provided.
198
207
  metadata: nil,
208
+ # If true, only zipcode is required when confirm is true; other address fields
209
+ # remain optional
210
+ minimal_address: nil,
199
211
  # The url to redirect after payment failure or success.
200
212
  return_url: nil,
201
213
  # Display saved payment methods of a returning customer False by default
@@ -227,6 +239,7 @@ module Dodopayments
227
239
  feature_flags: Dodopayments::CheckoutSessionRequest::FeatureFlags,
228
240
  force_3ds: T.nilable(T::Boolean),
229
241
  metadata: T.nilable(T::Hash[Symbol, String]),
242
+ minimal_address: T::Boolean,
230
243
  return_url: T.nilable(String),
231
244
  show_saved_payment_methods: T::Boolean,
232
245
  subscription_data:
@@ -0,0 +1,118 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class SubscriptionPreviewChangePlanParams < 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::SubscriptionPreviewChangePlanParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Unique identifier of the product to subscribe to
18
+ sig { returns(String) }
19
+ attr_accessor :product_id
20
+
21
+ # Proration Billing Mode
22
+ sig do
23
+ returns(
24
+ Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::OrSymbol
25
+ )
26
+ end
27
+ attr_accessor :proration_billing_mode
28
+
29
+ # Number of units to subscribe for. Must be at least 1.
30
+ sig { returns(Integer) }
31
+ attr_accessor :quantity
32
+
33
+ # Addons for the new plan. Note : Leaving this empty would remove any existing
34
+ # addons
35
+ sig { returns(T.nilable(T::Array[Dodopayments::AttachAddon])) }
36
+ attr_accessor :addons
37
+
38
+ sig do
39
+ params(
40
+ product_id: String,
41
+ proration_billing_mode:
42
+ Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::OrSymbol,
43
+ quantity: Integer,
44
+ addons: T.nilable(T::Array[Dodopayments::AttachAddon::OrHash]),
45
+ request_options: Dodopayments::RequestOptions::OrHash
46
+ ).returns(T.attached_class)
47
+ end
48
+ def self.new(
49
+ # Unique identifier of the product to subscribe to
50
+ product_id:,
51
+ # Proration Billing Mode
52
+ proration_billing_mode:,
53
+ # Number of units to subscribe for. Must be at least 1.
54
+ quantity:,
55
+ # Addons for the new plan. Note : Leaving this empty would remove any existing
56
+ # addons
57
+ addons: nil,
58
+ request_options: {}
59
+ )
60
+ end
61
+
62
+ sig do
63
+ override.returns(
64
+ {
65
+ product_id: String,
66
+ proration_billing_mode:
67
+ Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::OrSymbol,
68
+ quantity: Integer,
69
+ addons: T.nilable(T::Array[Dodopayments::AttachAddon]),
70
+ request_options: Dodopayments::RequestOptions
71
+ }
72
+ )
73
+ end
74
+ def to_hash
75
+ end
76
+
77
+ # Proration Billing Mode
78
+ module ProrationBillingMode
79
+ extend Dodopayments::Internal::Type::Enum
80
+
81
+ TaggedSymbol =
82
+ T.type_alias do
83
+ T.all(
84
+ Symbol,
85
+ Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode
86
+ )
87
+ end
88
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
89
+
90
+ PRORATED_IMMEDIATELY =
91
+ T.let(
92
+ :prorated_immediately,
93
+ Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::TaggedSymbol
94
+ )
95
+ FULL_IMMEDIATELY =
96
+ T.let(
97
+ :full_immediately,
98
+ Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::TaggedSymbol
99
+ )
100
+ DIFFERENCE_IMMEDIATELY =
101
+ T.let(
102
+ :difference_immediately,
103
+ Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::TaggedSymbol
104
+ )
105
+
106
+ sig do
107
+ override.returns(
108
+ T::Array[
109
+ Dodopayments::SubscriptionPreviewChangePlanParams::ProrationBillingMode::TaggedSymbol
110
+ ]
111
+ )
112
+ end
113
+ def self.values
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end