dodopayments 2.9.0 → 2.10.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 (219) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/internal/transport/base_client.rb +2 -0
  5. data/lib/dodopayments/internal/type/union.rb +21 -7
  6. data/lib/dodopayments/models/abandoned_checkout_detected_webhook_event.rb +4 -16
  7. data/lib/dodopayments/models/abandoned_checkout_recovered_webhook_event.rb +4 -16
  8. data/lib/dodopayments/models/checkout_session_request.rb +15 -2
  9. data/lib/dodopayments/models/credit_added_webhook_event.rb +4 -16
  10. data/lib/dodopayments/models/credit_balance_low_webhook_event.rb +4 -16
  11. data/lib/dodopayments/models/credit_deducted_webhook_event.rb +4 -16
  12. data/lib/dodopayments/models/credit_expired_webhook_event.rb +4 -16
  13. data/lib/dodopayments/models/credit_manual_adjustment_webhook_event.rb +4 -16
  14. data/lib/dodopayments/models/credit_overage_charged_webhook_event.rb +4 -16
  15. data/lib/dodopayments/models/credit_overage_reset_webhook_event.rb +4 -16
  16. data/lib/dodopayments/models/credit_rolled_over_webhook_event.rb +4 -16
  17. data/lib/dodopayments/models/credit_rollover_forfeited_webhook_event.rb +4 -16
  18. data/lib/dodopayments/models/digital_product_delivery.rb +14 -7
  19. data/lib/dodopayments/models/digital_product_delivery_file.rb +12 -5
  20. data/lib/dodopayments/models/dispute_accepted_webhook_event.rb +4 -16
  21. data/lib/dodopayments/models/dispute_cancelled_webhook_event.rb +4 -16
  22. data/lib/dodopayments/models/dispute_challenged_webhook_event.rb +4 -16
  23. data/lib/dodopayments/models/dispute_expired_webhook_event.rb +4 -16
  24. data/lib/dodopayments/models/dispute_lost_webhook_event.rb +4 -16
  25. data/lib/dodopayments/models/dispute_opened_webhook_event.rb +4 -16
  26. data/lib/dodopayments/models/dispute_won_webhook_event.rb +4 -16
  27. data/lib/dodopayments/models/dunning_recovered_webhook_event.rb +4 -16
  28. data/lib/dodopayments/models/dunning_started_webhook_event.rb +4 -16
  29. data/lib/dodopayments/models/entitlement.rb +31 -20
  30. data/lib/dodopayments/models/entitlement_create_params.rb +3 -3
  31. data/lib/dodopayments/models/entitlement_grant_created_webhook_event.rb +10 -17
  32. data/lib/dodopayments/models/entitlement_grant_delivered_webhook_event.rb +10 -17
  33. data/lib/dodopayments/models/entitlement_grant_failed_webhook_event.rb +10 -17
  34. data/lib/dodopayments/models/entitlement_grant_revoked_webhook_event.rb +10 -17
  35. data/lib/dodopayments/models/entitlement_update_params.rb +3 -3
  36. data/lib/dodopayments/models/entitlements/entitlement_grant.rb +50 -32
  37. data/lib/dodopayments/models/entitlements/file_upload_response.rb +3 -3
  38. data/lib/dodopayments/models/entitlements/license_key_grant.rb +14 -9
  39. data/lib/dodopayments/models/integration_config.rb +70 -27
  40. data/lib/dodopayments/models/integration_config_response.rb +88 -48
  41. data/lib/dodopayments/models/license_key_created_webhook_event.rb +4 -16
  42. data/lib/dodopayments/models/payment.rb +153 -3
  43. data/lib/dodopayments/models/payment_cancelled_webhook_event.rb +4 -16
  44. data/lib/dodopayments/models/payment_create_params.rb +15 -3
  45. data/lib/dodopayments/models/payment_create_response.rb +14 -3
  46. data/lib/dodopayments/models/payment_failed_webhook_event.rb +4 -16
  47. data/lib/dodopayments/models/payment_processing_webhook_event.rb +4 -16
  48. data/lib/dodopayments/models/payment_succeeded_webhook_event.rb +4 -16
  49. data/lib/dodopayments/models/payout_list_response.rb +6 -3
  50. data/lib/dodopayments/models/price.rb +20 -48
  51. data/lib/dodopayments/models/product.rb +6 -8
  52. data/lib/dodopayments/models/product_create_params.rb +3 -3
  53. data/lib/dodopayments/models/product_entitlement_summary.rb +5 -5
  54. data/lib/dodopayments/models/product_item_req.rb +42 -1
  55. data/lib/dodopayments/models/product_update_params.rb +3 -3
  56. data/lib/dodopayments/models/refund_failed_webhook_event.rb +4 -16
  57. data/lib/dodopayments/models/refund_succeeded_webhook_event.rb +4 -16
  58. data/lib/dodopayments/models/subscription.rb +153 -5
  59. data/lib/dodopayments/models/subscription_active_webhook_event.rb +4 -16
  60. data/lib/dodopayments/models/subscription_cancelled_webhook_event.rb +4 -16
  61. data/lib/dodopayments/models/subscription_create_params.rb +15 -3
  62. data/lib/dodopayments/models/subscription_create_response.rb +14 -3
  63. data/lib/dodopayments/models/subscription_expired_webhook_event.rb +4 -16
  64. data/lib/dodopayments/models/subscription_failed_webhook_event.rb +4 -16
  65. data/lib/dodopayments/models/subscription_list_response.rb +36 -5
  66. data/lib/dodopayments/models/subscription_on_hold_webhook_event.rb +4 -16
  67. data/lib/dodopayments/models/subscription_plan_changed_webhook_event.rb +4 -16
  68. data/lib/dodopayments/models/subscription_preview_change_plan_response.rb +21 -49
  69. data/lib/dodopayments/models/subscription_renewed_webhook_event.rb +4 -16
  70. data/lib/dodopayments/models/subscription_update_payment_method_params.rb +12 -30
  71. data/lib/dodopayments/models/subscription_updated_webhook_event.rb +4 -16
  72. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +41 -39
  73. data/lib/dodopayments/models/unwrap_webhook_event.rb +41 -39
  74. data/lib/dodopayments/models/update_subscription_plan_req.rb +17 -6
  75. data/lib/dodopayments/models/webhook_event_type.rb +3 -0
  76. data/lib/dodopayments/models/webhook_payload.rb +57 -143
  77. data/lib/dodopayments/resources/checkout_sessions.rb +8 -4
  78. data/lib/dodopayments/resources/entitlements/files.rb +3 -10
  79. data/lib/dodopayments/resources/entitlements/grants.rb +2 -4
  80. data/lib/dodopayments/resources/entitlements.rb +2 -2
  81. data/lib/dodopayments/resources/payments.rb +4 -2
  82. data/lib/dodopayments/resources/subscriptions.rb +12 -6
  83. data/lib/dodopayments/version.rb +1 -1
  84. data/rbi/dodopayments/models/abandoned_checkout_detected_webhook_event.rbi +4 -40
  85. data/rbi/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbi +4 -40
  86. data/rbi/dodopayments/models/checkout_session_request.rbi +14 -0
  87. data/rbi/dodopayments/models/credit_added_webhook_event.rbi +4 -29
  88. data/rbi/dodopayments/models/credit_balance_low_webhook_event.rbi +4 -33
  89. data/rbi/dodopayments/models/credit_deducted_webhook_event.rbi +4 -33
  90. data/rbi/dodopayments/models/credit_expired_webhook_event.rbi +4 -33
  91. data/rbi/dodopayments/models/credit_manual_adjustment_webhook_event.rbi +4 -39
  92. data/rbi/dodopayments/models/credit_overage_charged_webhook_event.rbi +4 -36
  93. data/rbi/dodopayments/models/credit_overage_reset_webhook_event.rbi +4 -36
  94. data/rbi/dodopayments/models/credit_rolled_over_webhook_event.rbi +4 -33
  95. data/rbi/dodopayments/models/credit_rollover_forfeited_webhook_event.rbi +4 -40
  96. data/rbi/dodopayments/models/digital_product_delivery.rbi +15 -5
  97. data/rbi/dodopayments/models/digital_product_delivery_file.rbi +11 -0
  98. data/rbi/dodopayments/models/dispute_accepted_webhook_event.rbi +4 -33
  99. data/rbi/dodopayments/models/dispute_cancelled_webhook_event.rbi +4 -33
  100. data/rbi/dodopayments/models/dispute_challenged_webhook_event.rbi +4 -34
  101. data/rbi/dodopayments/models/dispute_expired_webhook_event.rbi +4 -33
  102. data/rbi/dodopayments/models/dispute_lost_webhook_event.rbi +4 -29
  103. data/rbi/dodopayments/models/dispute_opened_webhook_event.rbi +4 -33
  104. data/rbi/dodopayments/models/dispute_won_webhook_event.rbi +4 -29
  105. data/rbi/dodopayments/models/dunning_recovered_webhook_event.rbi +4 -33
  106. data/rbi/dodopayments/models/dunning_started_webhook_event.rbi +4 -33
  107. data/rbi/dodopayments/models/entitlement.rbi +35 -20
  108. data/rbi/dodopayments/models/entitlement_create_params.rbi +8 -5
  109. data/rbi/dodopayments/models/entitlement_grant_created_webhook_event.rbi +8 -40
  110. data/rbi/dodopayments/models/entitlement_grant_delivered_webhook_event.rbi +8 -40
  111. data/rbi/dodopayments/models/entitlement_grant_failed_webhook_event.rbi +8 -39
  112. data/rbi/dodopayments/models/entitlement_grant_revoked_webhook_event.rbi +8 -40
  113. data/rbi/dodopayments/models/entitlement_update_params.rbi +4 -4
  114. data/rbi/dodopayments/models/entitlements/entitlement_grant.rbi +54 -20
  115. data/rbi/dodopayments/models/entitlements/file_upload_response.rbi +4 -4
  116. data/rbi/dodopayments/models/entitlements/license_key_grant.rbi +10 -4
  117. data/rbi/dodopayments/models/integration_config.rbi +141 -26
  118. data/rbi/dodopayments/models/integration_config_response.rbi +153 -38
  119. data/rbi/dodopayments/models/license_key_created_webhook_event.rbi +4 -34
  120. data/rbi/dodopayments/models/payment.rbi +170 -2
  121. data/rbi/dodopayments/models/payment_cancelled_webhook_event.rbi +4 -33
  122. data/rbi/dodopayments/models/payment_create_params.rbi +14 -2
  123. data/rbi/dodopayments/models/payment_create_response.rbi +12 -2
  124. data/rbi/dodopayments/models/payment_failed_webhook_event.rbi +4 -33
  125. data/rbi/dodopayments/models/payment_processing_webhook_event.rbi +4 -34
  126. data/rbi/dodopayments/models/payment_succeeded_webhook_event.rbi +4 -33
  127. data/rbi/dodopayments/models/price.rbi +18 -90
  128. data/rbi/dodopayments/models/product.rbi +4 -8
  129. data/rbi/dodopayments/models/product_entitlement_summary.rbi +8 -8
  130. data/rbi/dodopayments/models/product_item_req.rbi +74 -3
  131. data/rbi/dodopayments/models/refund_failed_webhook_event.rbi +4 -31
  132. data/rbi/dodopayments/models/refund_succeeded_webhook_event.rbi +4 -33
  133. data/rbi/dodopayments/models/subscription.rbi +173 -4
  134. data/rbi/dodopayments/models/subscription_active_webhook_event.rbi +4 -36
  135. data/rbi/dodopayments/models/subscription_cancelled_webhook_event.rbi +4 -36
  136. data/rbi/dodopayments/models/subscription_create_params.rbi +14 -2
  137. data/rbi/dodopayments/models/subscription_create_response.rbi +12 -2
  138. data/rbi/dodopayments/models/subscription_expired_webhook_event.rbi +4 -36
  139. data/rbi/dodopayments/models/subscription_failed_webhook_event.rbi +4 -36
  140. data/rbi/dodopayments/models/subscription_list_response.rbi +67 -4
  141. data/rbi/dodopayments/models/subscription_on_hold_webhook_event.rbi +4 -36
  142. data/rbi/dodopayments/models/subscription_plan_changed_webhook_event.rbi +4 -40
  143. data/rbi/dodopayments/models/subscription_preview_change_plan_response.rbi +18 -123
  144. data/rbi/dodopayments/models/subscription_renewed_webhook_event.rbi +4 -36
  145. data/rbi/dodopayments/models/subscription_update_payment_method_params.rbi +12 -96
  146. data/rbi/dodopayments/models/subscription_updated_webhook_event.rbi +4 -36
  147. data/rbi/dodopayments/models/update_subscription_plan_req.rbi +18 -8
  148. data/rbi/dodopayments/models/webhook_event_type.rbi +15 -0
  149. data/rbi/dodopayments/models/webhook_payload.rbi +48 -466
  150. data/rbi/dodopayments/resources/checkout_sessions.rbi +12 -0
  151. data/rbi/dodopayments/resources/entitlements/files.rbi +3 -10
  152. data/rbi/dodopayments/resources/entitlements/grants.rbi +2 -4
  153. data/rbi/dodopayments/resources/entitlements.rbi +4 -4
  154. data/rbi/dodopayments/resources/payments.rbi +6 -1
  155. data/rbi/dodopayments/resources/subscriptions.rbi +22 -9
  156. data/sig/dodopayments/models/abandoned_checkout_detected_webhook_event.rbs +4 -14
  157. data/sig/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbs +4 -14
  158. data/sig/dodopayments/models/checkout_session_request.rbs +5 -0
  159. data/sig/dodopayments/models/credit_added_webhook_event.rbs +4 -14
  160. data/sig/dodopayments/models/credit_balance_low_webhook_event.rbs +4 -14
  161. data/sig/dodopayments/models/credit_deducted_webhook_event.rbs +4 -14
  162. data/sig/dodopayments/models/credit_expired_webhook_event.rbs +4 -14
  163. data/sig/dodopayments/models/credit_manual_adjustment_webhook_event.rbs +4 -14
  164. data/sig/dodopayments/models/credit_overage_charged_webhook_event.rbs +4 -14
  165. data/sig/dodopayments/models/credit_overage_reset_webhook_event.rbs +4 -14
  166. data/sig/dodopayments/models/credit_rolled_over_webhook_event.rbs +4 -14
  167. data/sig/dodopayments/models/credit_rollover_forfeited_webhook_event.rbs +4 -14
  168. data/sig/dodopayments/models/dispute_accepted_webhook_event.rbs +4 -14
  169. data/sig/dodopayments/models/dispute_cancelled_webhook_event.rbs +4 -14
  170. data/sig/dodopayments/models/dispute_challenged_webhook_event.rbs +4 -14
  171. data/sig/dodopayments/models/dispute_expired_webhook_event.rbs +4 -14
  172. data/sig/dodopayments/models/dispute_lost_webhook_event.rbs +4 -14
  173. data/sig/dodopayments/models/dispute_opened_webhook_event.rbs +4 -14
  174. data/sig/dodopayments/models/dispute_won_webhook_event.rbs +4 -14
  175. data/sig/dodopayments/models/dunning_recovered_webhook_event.rbs +4 -14
  176. data/sig/dodopayments/models/dunning_started_webhook_event.rbs +4 -14
  177. data/sig/dodopayments/models/entitlement.rbs +8 -10
  178. data/sig/dodopayments/models/entitlement_create_params.rbs +6 -4
  179. data/sig/dodopayments/models/entitlement_grant_created_webhook_event.rbs +4 -14
  180. data/sig/dodopayments/models/entitlement_grant_delivered_webhook_event.rbs +4 -14
  181. data/sig/dodopayments/models/entitlement_grant_failed_webhook_event.rbs +4 -14
  182. data/sig/dodopayments/models/entitlement_grant_revoked_webhook_event.rbs +4 -14
  183. data/sig/dodopayments/models/entitlements/entitlement_grant.rbs +4 -11
  184. data/sig/dodopayments/models/integration_config.rbs +28 -4
  185. data/sig/dodopayments/models/integration_config_response.rbs +28 -9
  186. data/sig/dodopayments/models/license_key_created_webhook_event.rbs +4 -14
  187. data/sig/dodopayments/models/payment.rbs +97 -0
  188. data/sig/dodopayments/models/payment_cancelled_webhook_event.rbs +4 -14
  189. data/sig/dodopayments/models/payment_create_params.rbs +5 -0
  190. data/sig/dodopayments/models/payment_create_response.rbs +5 -0
  191. data/sig/dodopayments/models/payment_failed_webhook_event.rbs +4 -14
  192. data/sig/dodopayments/models/payment_processing_webhook_event.rbs +4 -14
  193. data/sig/dodopayments/models/payment_succeeded_webhook_event.rbs +4 -14
  194. data/sig/dodopayments/models/price.rbs +15 -45
  195. data/sig/dodopayments/models/product_item_req.rbs +27 -3
  196. data/sig/dodopayments/models/refund_failed_webhook_event.rbs +4 -14
  197. data/sig/dodopayments/models/refund_succeeded_webhook_event.rbs +4 -14
  198. data/sig/dodopayments/models/subscription.rbs +97 -0
  199. data/sig/dodopayments/models/subscription_active_webhook_event.rbs +4 -14
  200. data/sig/dodopayments/models/subscription_cancelled_webhook_event.rbs +4 -14
  201. data/sig/dodopayments/models/subscription_create_params.rbs +5 -0
  202. data/sig/dodopayments/models/subscription_create_response.rbs +5 -0
  203. data/sig/dodopayments/models/subscription_expired_webhook_event.rbs +4 -14
  204. data/sig/dodopayments/models/subscription_failed_webhook_event.rbs +4 -14
  205. data/sig/dodopayments/models/subscription_list_response.rbs +24 -0
  206. data/sig/dodopayments/models/subscription_on_hold_webhook_event.rbs +4 -14
  207. data/sig/dodopayments/models/subscription_plan_changed_webhook_event.rbs +4 -14
  208. data/sig/dodopayments/models/subscription_preview_change_plan_response.rbs +15 -45
  209. data/sig/dodopayments/models/subscription_renewed_webhook_event.rbs +4 -14
  210. data/sig/dodopayments/models/subscription_update_payment_method_params.rbs +8 -48
  211. data/sig/dodopayments/models/subscription_updated_webhook_event.rbs +4 -14
  212. data/sig/dodopayments/models/update_subscription_plan_req.rbs +5 -0
  213. data/sig/dodopayments/models/webhook_event_type.rbs +6 -0
  214. data/sig/dodopayments/models/webhook_payload.rbs +50 -213
  215. data/sig/dodopayments/resources/checkout_sessions.rbs +2 -0
  216. data/sig/dodopayments/resources/entitlements.rbs +1 -1
  217. data/sig/dodopayments/resources/payments.rbs +1 -0
  218. data/sig/dodopayments/resources/subscriptions.rbs +3 -0
  219. metadata +2 -2
@@ -27,11 +27,7 @@ module Dodopayments
27
27
  attr_accessor :timestamp
28
28
 
29
29
  # The event type
30
- sig do
31
- returns(
32
- Dodopayments::SubscriptionExpiredWebhookEvent::Type::TaggedSymbol
33
- )
34
- end
30
+ sig { returns(Symbol) }
35
31
  attr_accessor :type
36
32
 
37
33
  sig do
@@ -39,7 +35,7 @@ module Dodopayments
39
35
  business_id: String,
40
36
  data: Dodopayments::Subscription::OrHash,
41
37
  timestamp: Time,
42
- type: Dodopayments::SubscriptionExpiredWebhookEvent::Type::OrSymbol
38
+ type: Symbol
43
39
  ).returns(T.attached_class)
44
40
  end
45
41
  def self.new(
@@ -50,7 +46,7 @@ module Dodopayments
50
46
  # The timestamp of when the event occurred
51
47
  timestamp:,
52
48
  # The event type
53
- type:
49
+ type: :"subscription.expired"
54
50
  )
55
51
  end
56
52
 
@@ -60,40 +56,12 @@ module Dodopayments
60
56
  business_id: String,
61
57
  data: Dodopayments::Subscription,
62
58
  timestamp: Time,
63
- type:
64
- Dodopayments::SubscriptionExpiredWebhookEvent::Type::TaggedSymbol
59
+ type: Symbol
65
60
  }
66
61
  )
67
62
  end
68
63
  def to_hash
69
64
  end
70
-
71
- # The event type
72
- module Type
73
- extend Dodopayments::Internal::Type::Enum
74
-
75
- TaggedSymbol =
76
- T.type_alias do
77
- T.all(Symbol, Dodopayments::SubscriptionExpiredWebhookEvent::Type)
78
- end
79
- OrSymbol = T.type_alias { T.any(Symbol, String) }
80
-
81
- SUBSCRIPTION_EXPIRED =
82
- T.let(
83
- :"subscription.expired",
84
- Dodopayments::SubscriptionExpiredWebhookEvent::Type::TaggedSymbol
85
- )
86
-
87
- sig do
88
- override.returns(
89
- T::Array[
90
- Dodopayments::SubscriptionExpiredWebhookEvent::Type::TaggedSymbol
91
- ]
92
- )
93
- end
94
- def self.values
95
- end
96
- end
97
65
  end
98
66
  end
99
67
  end
@@ -27,11 +27,7 @@ module Dodopayments
27
27
  attr_accessor :timestamp
28
28
 
29
29
  # The event type
30
- sig do
31
- returns(
32
- Dodopayments::SubscriptionFailedWebhookEvent::Type::TaggedSymbol
33
- )
34
- end
30
+ sig { returns(Symbol) }
35
31
  attr_accessor :type
36
32
 
37
33
  sig do
@@ -39,7 +35,7 @@ module Dodopayments
39
35
  business_id: String,
40
36
  data: Dodopayments::Subscription::OrHash,
41
37
  timestamp: Time,
42
- type: Dodopayments::SubscriptionFailedWebhookEvent::Type::OrSymbol
38
+ type: Symbol
43
39
  ).returns(T.attached_class)
44
40
  end
45
41
  def self.new(
@@ -50,7 +46,7 @@ module Dodopayments
50
46
  # The timestamp of when the event occurred
51
47
  timestamp:,
52
48
  # The event type
53
- type:
49
+ type: :"subscription.failed"
54
50
  )
55
51
  end
56
52
 
@@ -60,40 +56,12 @@ module Dodopayments
60
56
  business_id: String,
61
57
  data: Dodopayments::Subscription,
62
58
  timestamp: Time,
63
- type:
64
- Dodopayments::SubscriptionFailedWebhookEvent::Type::TaggedSymbol
59
+ type: Symbol
65
60
  }
66
61
  )
67
62
  end
68
63
  def to_hash
69
64
  end
70
-
71
- # The event type
72
- module Type
73
- extend Dodopayments::Internal::Type::Enum
74
-
75
- TaggedSymbol =
76
- T.type_alias do
77
- T.all(Symbol, Dodopayments::SubscriptionFailedWebhookEvent::Type)
78
- end
79
- OrSymbol = T.type_alias { T.any(Symbol, String) }
80
-
81
- SUBSCRIPTION_FAILED =
82
- T.let(
83
- :"subscription.failed",
84
- Dodopayments::SubscriptionFailedWebhookEvent::Type::TaggedSymbol
85
- )
86
-
87
- sig do
88
- override.returns(
89
- T::Array[
90
- Dodopayments::SubscriptionFailedWebhookEvent::Type::TaggedSymbol
91
- ]
92
- )
93
- end
94
- def self.values
95
- end
96
- end
97
65
  end
98
66
  end
99
67
  end
@@ -39,6 +39,14 @@ module Dodopayments
39
39
  end
40
40
  attr_writer :customer
41
41
 
42
+ # All stacked discounts applied, in order of application
43
+ sig do
44
+ returns(
45
+ T::Array[Dodopayments::Models::SubscriptionListResponse::Discount]
46
+ )
47
+ end
48
+ attr_accessor :discounts
49
+
42
50
  # Additional custom data associated with the subscription
43
51
  sig { returns(T::Hash[Symbol, String]) }
44
52
  attr_accessor :metadata
@@ -105,11 +113,11 @@ module Dodopayments
105
113
  sig { returns(T.nilable(Time)) }
106
114
  attr_accessor :cancelled_at
107
115
 
108
- # Number of remaining discount cycles if discount is applied
116
+ # DEPRECATED: Use discounts[].cycles_remaining instead.
109
117
  sig { returns(T.nilable(Integer)) }
110
118
  attr_accessor :discount_cycles_remaining
111
119
 
112
- # The discount id if discount is applied
120
+ # DEPRECATED: Use discounts instead.
113
121
  sig { returns(T.nilable(String)) }
114
122
  attr_accessor :discount_id
115
123
 
@@ -144,6 +152,10 @@ module Dodopayments
144
152
  created_at: Time,
145
153
  currency: Dodopayments::Currency::OrSymbol,
146
154
  customer: Dodopayments::CustomerLimitedDetails::OrHash,
155
+ discounts:
156
+ T::Array[
157
+ Dodopayments::Models::SubscriptionListResponse::Discount::OrHash
158
+ ],
147
159
  metadata: T::Hash[Symbol, String],
148
160
  next_billing_date: Time,
149
161
  on_demand: T::Boolean,
@@ -180,6 +192,8 @@ module Dodopayments
180
192
  currency:,
181
193
  # Customer details associated with the subscription
182
194
  customer:,
195
+ # All stacked discounts applied, in order of application
196
+ discounts:,
183
197
  # Additional custom data associated with the subscription
184
198
  metadata:,
185
199
  # Timestamp of the next scheduled billing. Indicates the end of current billing
@@ -214,9 +228,9 @@ module Dodopayments
214
228
  trial_period_days:,
215
229
  # Cancelled timestamp if the subscription is cancelled
216
230
  cancelled_at: nil,
217
- # Number of remaining discount cycles if discount is applied
231
+ # DEPRECATED: Use discounts[].cycles_remaining instead.
218
232
  discount_cycles_remaining: nil,
219
- # The discount id if discount is applied
233
+ # DEPRECATED: Use discounts instead.
220
234
  discount_id: nil,
221
235
  # Saved payment method id used for recurring charges
222
236
  payment_method_id: nil,
@@ -237,6 +251,10 @@ module Dodopayments
237
251
  created_at: Time,
238
252
  currency: Dodopayments::Currency::TaggedSymbol,
239
253
  customer: Dodopayments::CustomerLimitedDetails,
254
+ discounts:
255
+ T::Array[
256
+ Dodopayments::Models::SubscriptionListResponse::Discount
257
+ ],
240
258
  metadata: T::Hash[Symbol, String],
241
259
  next_billing_date: Time,
242
260
  on_demand: T::Boolean,
@@ -266,6 +284,51 @@ module Dodopayments
266
284
  end
267
285
  def to_hash
268
286
  end
287
+
288
+ class Discount < Dodopayments::Internal::Type::BaseModel
289
+ OrHash =
290
+ T.type_alias do
291
+ T.any(
292
+ Dodopayments::Models::SubscriptionListResponse::Discount,
293
+ Dodopayments::Internal::AnyHash
294
+ )
295
+ end
296
+
297
+ # The unique discount ID
298
+ sig { returns(String) }
299
+ attr_accessor :discount_id
300
+
301
+ # Remaining billing cycles for this discount on this subscription
302
+ sig { returns(T.nilable(Integer)) }
303
+ attr_accessor :discount_cycles_remaining
304
+
305
+ # Lightweight discount info for list endpoints. Array order represents position
306
+ # (no explicit position field).
307
+ sig do
308
+ params(
309
+ discount_id: String,
310
+ discount_cycles_remaining: T.nilable(Integer)
311
+ ).returns(T.attached_class)
312
+ end
313
+ def self.new(
314
+ # The unique discount ID
315
+ discount_id:,
316
+ # Remaining billing cycles for this discount on this subscription
317
+ discount_cycles_remaining: nil
318
+ )
319
+ end
320
+
321
+ sig do
322
+ override.returns(
323
+ {
324
+ discount_id: String,
325
+ discount_cycles_remaining: T.nilable(Integer)
326
+ }
327
+ )
328
+ end
329
+ def to_hash
330
+ end
331
+ end
269
332
  end
270
333
  end
271
334
  end
@@ -27,11 +27,7 @@ module Dodopayments
27
27
  attr_accessor :timestamp
28
28
 
29
29
  # The event type
30
- sig do
31
- returns(
32
- Dodopayments::SubscriptionOnHoldWebhookEvent::Type::TaggedSymbol
33
- )
34
- end
30
+ sig { returns(Symbol) }
35
31
  attr_accessor :type
36
32
 
37
33
  sig do
@@ -39,7 +35,7 @@ module Dodopayments
39
35
  business_id: String,
40
36
  data: Dodopayments::Subscription::OrHash,
41
37
  timestamp: Time,
42
- type: Dodopayments::SubscriptionOnHoldWebhookEvent::Type::OrSymbol
38
+ type: Symbol
43
39
  ).returns(T.attached_class)
44
40
  end
45
41
  def self.new(
@@ -50,7 +46,7 @@ module Dodopayments
50
46
  # The timestamp of when the event occurred
51
47
  timestamp:,
52
48
  # The event type
53
- type:
49
+ type: :"subscription.on_hold"
54
50
  )
55
51
  end
56
52
 
@@ -60,40 +56,12 @@ module Dodopayments
60
56
  business_id: String,
61
57
  data: Dodopayments::Subscription,
62
58
  timestamp: Time,
63
- type:
64
- Dodopayments::SubscriptionOnHoldWebhookEvent::Type::TaggedSymbol
59
+ type: Symbol
65
60
  }
66
61
  )
67
62
  end
68
63
  def to_hash
69
64
  end
70
-
71
- # The event type
72
- module Type
73
- extend Dodopayments::Internal::Type::Enum
74
-
75
- TaggedSymbol =
76
- T.type_alias do
77
- T.all(Symbol, Dodopayments::SubscriptionOnHoldWebhookEvent::Type)
78
- end
79
- OrSymbol = T.type_alias { T.any(Symbol, String) }
80
-
81
- SUBSCRIPTION_ON_HOLD =
82
- T.let(
83
- :"subscription.on_hold",
84
- Dodopayments::SubscriptionOnHoldWebhookEvent::Type::TaggedSymbol
85
- )
86
-
87
- sig do
88
- override.returns(
89
- T::Array[
90
- Dodopayments::SubscriptionOnHoldWebhookEvent::Type::TaggedSymbol
91
- ]
92
- )
93
- end
94
- def self.values
95
- end
96
- end
97
65
  end
98
66
  end
99
67
  end
@@ -27,11 +27,7 @@ module Dodopayments
27
27
  attr_accessor :timestamp
28
28
 
29
29
  # The event type
30
- sig do
31
- returns(
32
- Dodopayments::SubscriptionPlanChangedWebhookEvent::Type::TaggedSymbol
33
- )
34
- end
30
+ sig { returns(Symbol) }
35
31
  attr_accessor :type
36
32
 
37
33
  sig do
@@ -39,8 +35,7 @@ module Dodopayments
39
35
  business_id: String,
40
36
  data: Dodopayments::Subscription::OrHash,
41
37
  timestamp: Time,
42
- type:
43
- Dodopayments::SubscriptionPlanChangedWebhookEvent::Type::OrSymbol
38
+ type: Symbol
44
39
  ).returns(T.attached_class)
45
40
  end
46
41
  def self.new(
@@ -51,7 +46,7 @@ module Dodopayments
51
46
  # The timestamp of when the event occurred
52
47
  timestamp:,
53
48
  # The event type
54
- type:
49
+ type: :"subscription.plan_changed"
55
50
  )
56
51
  end
57
52
 
@@ -61,43 +56,12 @@ module Dodopayments
61
56
  business_id: String,
62
57
  data: Dodopayments::Subscription,
63
58
  timestamp: Time,
64
- type:
65
- Dodopayments::SubscriptionPlanChangedWebhookEvent::Type::TaggedSymbol
59
+ type: Symbol
66
60
  }
67
61
  )
68
62
  end
69
63
  def to_hash
70
64
  end
71
-
72
- # The event type
73
- module Type
74
- extend Dodopayments::Internal::Type::Enum
75
-
76
- TaggedSymbol =
77
- T.type_alias do
78
- T.all(
79
- Symbol,
80
- Dodopayments::SubscriptionPlanChangedWebhookEvent::Type
81
- )
82
- end
83
- OrSymbol = T.type_alias { T.any(Symbol, String) }
84
-
85
- SUBSCRIPTION_PLAN_CHANGED =
86
- T.let(
87
- :"subscription.plan_changed",
88
- Dodopayments::SubscriptionPlanChangedWebhookEvent::Type::TaggedSymbol
89
- )
90
-
91
- sig do
92
- override.returns(
93
- T::Array[
94
- Dodopayments::SubscriptionPlanChangedWebhookEvent::Type::TaggedSymbol
95
- ]
96
- )
97
- end
98
- def self.values
99
- end
100
- end
101
65
  end
102
66
  end
103
67
  end
@@ -174,11 +174,7 @@ module Dodopayments
174
174
  sig { returns(T::Boolean) }
175
175
  attr_accessor :tax_inclusive
176
176
 
177
- sig do
178
- returns(
179
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Subscription::Type::TaggedSymbol
180
- )
181
- end
177
+ sig { returns(Symbol) }
182
178
  attr_accessor :type
183
179
 
184
180
  sig { returns(Integer) }
@@ -204,13 +200,12 @@ module Dodopayments
204
200
  proration_factor: Float,
205
201
  quantity: Integer,
206
202
  tax_inclusive: T::Boolean,
207
- type:
208
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Subscription::Type::OrSymbol,
209
203
  unit_price: Integer,
210
204
  description: T.nilable(String),
211
205
  name: T.nilable(String),
212
206
  tax: T.nilable(Integer),
213
- tax_rate: T.nilable(Float)
207
+ tax_rate: T.nilable(Float),
208
+ type: Symbol
214
209
  ).returns(T.attached_class)
215
210
  end
216
211
  def self.new(
@@ -220,12 +215,12 @@ module Dodopayments
220
215
  proration_factor:,
221
216
  quantity:,
222
217
  tax_inclusive:,
223
- type:,
224
218
  unit_price:,
225
219
  description: nil,
226
220
  name: nil,
227
221
  tax: nil,
228
- tax_rate: nil
222
+ tax_rate: nil,
223
+ type: :subscription
229
224
  )
230
225
  end
231
226
 
@@ -238,8 +233,7 @@ module Dodopayments
238
233
  proration_factor: Float,
239
234
  quantity: Integer,
240
235
  tax_inclusive: T::Boolean,
241
- type:
242
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Subscription::Type::TaggedSymbol,
236
+ type: Symbol,
243
237
  unit_price: Integer,
244
238
  description: T.nilable(String),
245
239
  name: T.nilable(String),
@@ -250,35 +244,6 @@ module Dodopayments
250
244
  end
251
245
  def to_hash
252
246
  end
253
-
254
- module Type
255
- extend Dodopayments::Internal::Type::Enum
256
-
257
- TaggedSymbol =
258
- T.type_alias do
259
- T.all(
260
- Symbol,
261
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Subscription::Type
262
- )
263
- end
264
- OrSymbol = T.type_alias { T.any(Symbol, String) }
265
-
266
- SUBSCRIPTION =
267
- T.let(
268
- :subscription,
269
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Subscription::Type::TaggedSymbol
270
- )
271
-
272
- sig do
273
- override.returns(
274
- T::Array[
275
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Subscription::Type::TaggedSymbol
276
- ]
277
- )
278
- end
279
- def self.values
280
- end
281
- end
282
247
  end
283
248
 
284
249
  class Addon < Dodopayments::Internal::Type::BaseModel
@@ -316,11 +281,7 @@ module Dodopayments
316
281
  sig { returns(Float) }
317
282
  attr_accessor :tax_rate
318
283
 
319
- sig do
320
- returns(
321
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Addon::Type::TaggedSymbol
322
- )
323
- end
284
+ sig { returns(Symbol) }
324
285
  attr_accessor :type
325
286
 
326
287
  sig { returns(Integer) }
@@ -342,11 +303,10 @@ module Dodopayments
342
303
  tax_category: Dodopayments::TaxCategory::OrSymbol,
343
304
  tax_inclusive: T::Boolean,
344
305
  tax_rate: Float,
345
- type:
346
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Addon::Type::OrSymbol,
347
306
  unit_price: Integer,
348
307
  description: T.nilable(String),
349
- tax: T.nilable(Integer)
308
+ tax: T.nilable(Integer),
309
+ type: Symbol
350
310
  ).returns(T.attached_class)
351
311
  end
352
312
  def self.new(
@@ -360,10 +320,10 @@ module Dodopayments
360
320
  tax_category:,
361
321
  tax_inclusive:,
362
322
  tax_rate:,
363
- type:,
364
323
  unit_price:,
365
324
  description: nil,
366
- tax: nil
325
+ tax: nil,
326
+ type: :addon
367
327
  )
368
328
  end
369
329
 
@@ -378,8 +338,7 @@ module Dodopayments
378
338
  tax_category: Dodopayments::TaxCategory::TaggedSymbol,
379
339
  tax_inclusive: T::Boolean,
380
340
  tax_rate: Float,
381
- type:
382
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Addon::Type::TaggedSymbol,
341
+ type: Symbol,
383
342
  unit_price: Integer,
384
343
  description: T.nilable(String),
385
344
  tax: T.nilable(Integer)
@@ -388,35 +347,6 @@ module Dodopayments
388
347
  end
389
348
  def to_hash
390
349
  end
391
-
392
- module Type
393
- extend Dodopayments::Internal::Type::Enum
394
-
395
- TaggedSymbol =
396
- T.type_alias do
397
- T.all(
398
- Symbol,
399
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Addon::Type
400
- )
401
- end
402
- OrSymbol = T.type_alias { T.any(Symbol, String) }
403
-
404
- ADDON =
405
- T.let(
406
- :addon,
407
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Addon::Type::TaggedSymbol
408
- )
409
-
410
- sig do
411
- override.returns(
412
- T::Array[
413
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Addon::Type::TaggedSymbol
414
- ]
415
- )
416
- end
417
- def self.values
418
- end
419
- end
420
350
  end
421
351
 
422
352
  class Meter < Dodopayments::Internal::Type::BaseModel
@@ -455,11 +385,7 @@ module Dodopayments
455
385
  sig { returns(Float) }
456
386
  attr_accessor :tax_rate
457
387
 
458
- sig do
459
- returns(
460
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Meter::Type::TaggedSymbol
461
- )
462
- end
388
+ sig { returns(Symbol) }
463
389
  attr_accessor :type
464
390
 
465
391
  sig { returns(String) }
@@ -482,11 +408,10 @@ module Dodopayments
482
408
  subtotal: Integer,
483
409
  tax_inclusive: T::Boolean,
484
410
  tax_rate: Float,
485
- type:
486
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Meter::Type::OrSymbol,
487
411
  units_consumed: String,
488
412
  description: T.nilable(String),
489
- tax: T.nilable(Integer)
413
+ tax: T.nilable(Integer),
414
+ type: Symbol
490
415
  ).returns(T.attached_class)
491
416
  end
492
417
  def self.new(
@@ -499,10 +424,10 @@ module Dodopayments
499
424
  subtotal:,
500
425
  tax_inclusive:,
501
426
  tax_rate:,
502
- type:,
503
427
  units_consumed:,
504
428
  description: nil,
505
- tax: nil
429
+ tax: nil,
430
+ type: :meter
506
431
  )
507
432
  end
508
433
 
@@ -518,8 +443,7 @@ module Dodopayments
518
443
  subtotal: Integer,
519
444
  tax_inclusive: T::Boolean,
520
445
  tax_rate: Float,
521
- type:
522
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Meter::Type::TaggedSymbol,
446
+ type: Symbol,
523
447
  units_consumed: String,
524
448
  description: T.nilable(String),
525
449
  tax: T.nilable(Integer)
@@ -528,35 +452,6 @@ module Dodopayments
528
452
  end
529
453
  def to_hash
530
454
  end
531
-
532
- module Type
533
- extend Dodopayments::Internal::Type::Enum
534
-
535
- TaggedSymbol =
536
- T.type_alias do
537
- T.all(
538
- Symbol,
539
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Meter::Type
540
- )
541
- end
542
- OrSymbol = T.type_alias { T.any(Symbol, String) }
543
-
544
- METER =
545
- T.let(
546
- :meter,
547
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Meter::Type::TaggedSymbol
548
- )
549
-
550
- sig do
551
- override.returns(
552
- T::Array[
553
- Dodopayments::Models::SubscriptionPreviewChangePlanResponse::ImmediateCharge::LineItem::Meter::Type::TaggedSymbol
554
- ]
555
- )
556
- end
557
- def self.values
558
- end
559
- end
560
455
  end
561
456
 
562
457
  sig do