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
@@ -26,9 +26,7 @@ module Dodopayments
26
26
  attr_accessor :timestamp
27
27
 
28
28
  # The event type
29
- sig do
30
- returns(Dodopayments::PaymentCancelledWebhookEvent::Type::TaggedSymbol)
31
- end
29
+ sig { returns(Symbol) }
32
30
  attr_accessor :type
33
31
 
34
32
  sig do
@@ -36,7 +34,7 @@ module Dodopayments
36
34
  business_id: String,
37
35
  data: Dodopayments::Payment::OrHash,
38
36
  timestamp: Time,
39
- type: Dodopayments::PaymentCancelledWebhookEvent::Type::OrSymbol
37
+ type: Symbol
40
38
  ).returns(T.attached_class)
41
39
  end
42
40
  def self.new(
@@ -46,7 +44,7 @@ module Dodopayments
46
44
  # The timestamp of when the event occurred
47
45
  timestamp:,
48
46
  # The event type
49
- type:
47
+ type: :"payment.cancelled"
50
48
  )
51
49
  end
52
50
 
@@ -56,39 +54,12 @@ module Dodopayments
56
54
  business_id: String,
57
55
  data: Dodopayments::Payment,
58
56
  timestamp: Time,
59
- type: Dodopayments::PaymentCancelledWebhookEvent::Type::TaggedSymbol
57
+ type: Symbol
60
58
  }
61
59
  )
62
60
  end
63
61
  def to_hash
64
62
  end
65
-
66
- # The event type
67
- module Type
68
- extend Dodopayments::Internal::Type::Enum
69
-
70
- TaggedSymbol =
71
- T.type_alias do
72
- T.all(Symbol, Dodopayments::PaymentCancelledWebhookEvent::Type)
73
- end
74
- OrSymbol = T.type_alias { T.any(Symbol, String) }
75
-
76
- PAYMENT_CANCELLED =
77
- T.let(
78
- :"payment.cancelled",
79
- Dodopayments::PaymentCancelledWebhookEvent::Type::TaggedSymbol
80
- )
81
-
82
- sig do
83
- override.returns(
84
- T::Array[
85
- Dodopayments::PaymentCancelledWebhookEvent::Type::TaggedSymbol
86
- ]
87
- )
88
- end
89
- def self.values
90
- end
91
- end
92
63
  end
93
64
  end
94
65
  end
@@ -54,10 +54,16 @@ module Dodopayments
54
54
  sig { returns(T.nilable(Dodopayments::Currency::OrSymbol)) }
55
55
  attr_accessor :billing_currency
56
56
 
57
- # Discount Code to apply to the transaction
57
+ # DEPRECATED: Use discount_codes instead. Cannot be used together with
58
+ # discount_codes.
58
59
  sig { returns(T.nilable(String)) }
59
60
  attr_accessor :discount_code
60
61
 
62
+ # Stacked discount codes to apply, in order of application. Max 20. Cannot be used
63
+ # together with discount_code.
64
+ sig { returns(T.nilable(T::Array[String])) }
65
+ attr_accessor :discount_codes
66
+
61
67
  # Override merchant default 3DS behaviour for this payment
62
68
  sig { returns(T.nilable(T::Boolean)) }
63
69
  attr_accessor :force_3ds
@@ -132,6 +138,7 @@ module Dodopayments
132
138
  T.nilable(T::Array[Dodopayments::PaymentMethodTypes::OrSymbol]),
133
139
  billing_currency: T.nilable(Dodopayments::Currency::OrSymbol),
134
140
  discount_code: T.nilable(String),
141
+ discount_codes: T.nilable(T::Array[String]),
135
142
  force_3ds: T.nilable(T::Boolean),
136
143
  metadata: T::Hash[Symbol, String],
137
144
  payment_link: T.nilable(T::Boolean),
@@ -165,8 +172,12 @@ module Dodopayments
165
172
  # Fix the currency in which the end customer is billed. If Dodo Payments cannot
166
173
  # support that currency for this transaction, it will not proceed
167
174
  billing_currency: nil,
168
- # Discount Code to apply to the transaction
175
+ # DEPRECATED: Use discount_codes instead. Cannot be used together with
176
+ # discount_codes.
169
177
  discount_code: nil,
178
+ # Stacked discount codes to apply, in order of application. Max 20. Cannot be used
179
+ # together with discount_code.
180
+ discount_codes: nil,
170
181
  # Override merchant default 3DS behaviour for this payment
171
182
  force_3ds: nil,
172
183
  # Additional metadata associated with the payment. Defaults to empty if not
@@ -214,6 +225,7 @@ module Dodopayments
214
225
  T.nilable(T::Array[Dodopayments::PaymentMethodTypes::OrSymbol]),
215
226
  billing_currency: T.nilable(Dodopayments::Currency::OrSymbol),
216
227
  discount_code: T.nilable(String),
228
+ discount_codes: T.nilable(T::Array[String]),
217
229
  force_3ds: T.nilable(T::Boolean),
218
230
  metadata: T::Hash[Symbol, String],
219
231
  payment_link: T.nilable(T::Boolean),
@@ -37,10 +37,15 @@ module Dodopayments
37
37
  sig { returns(Integer) }
38
38
  attr_accessor :total_amount
39
39
 
40
- # The discount id if discount is applied
40
+ # DEPRECATED: Use discount_ids instead. Returns the first discount's ID if
41
+ # present.
41
42
  sig { returns(T.nilable(String)) }
42
43
  attr_accessor :discount_id
43
44
 
45
+ # All stacked discount IDs applied, in order of application
46
+ sig { returns(T.nilable(T::Array[String])) }
47
+ attr_accessor :discount_ids
48
+
44
49
  # Expiry timestamp of the payment link
45
50
  sig { returns(T.nilable(Time)) }
46
51
  attr_accessor :expires_on
@@ -61,6 +66,7 @@ module Dodopayments
61
66
  payment_id: String,
62
67
  total_amount: Integer,
63
68
  discount_id: T.nilable(String),
69
+ discount_ids: T.nilable(T::Array[String]),
64
70
  expires_on: T.nilable(Time),
65
71
  payment_link: T.nilable(String),
66
72
  product_cart:
@@ -79,8 +85,11 @@ module Dodopayments
79
85
  payment_id:,
80
86
  # Total amount of the payment in smallest currency unit (e.g. cents)
81
87
  total_amount:,
82
- # The discount id if discount is applied
88
+ # DEPRECATED: Use discount_ids instead. Returns the first discount's ID if
89
+ # present.
83
90
  discount_id: nil,
91
+ # All stacked discount IDs applied, in order of application
92
+ discount_ids: nil,
84
93
  # Expiry timestamp of the payment link
85
94
  expires_on: nil,
86
95
  # Optional URL to a hosted payment page
@@ -99,6 +108,7 @@ module Dodopayments
99
108
  payment_id: String,
100
109
  total_amount: Integer,
101
110
  discount_id: T.nilable(String),
111
+ discount_ids: T.nilable(T::Array[String]),
102
112
  expires_on: T.nilable(Time),
103
113
  payment_link: T.nilable(String),
104
114
  product_cart:
@@ -26,9 +26,7 @@ module Dodopayments
26
26
  attr_accessor :timestamp
27
27
 
28
28
  # The event type
29
- sig do
30
- returns(Dodopayments::PaymentFailedWebhookEvent::Type::TaggedSymbol)
31
- end
29
+ sig { returns(Symbol) }
32
30
  attr_accessor :type
33
31
 
34
32
  sig do
@@ -36,7 +34,7 @@ module Dodopayments
36
34
  business_id: String,
37
35
  data: Dodopayments::Payment::OrHash,
38
36
  timestamp: Time,
39
- type: Dodopayments::PaymentFailedWebhookEvent::Type::OrSymbol
37
+ type: Symbol
40
38
  ).returns(T.attached_class)
41
39
  end
42
40
  def self.new(
@@ -46,7 +44,7 @@ module Dodopayments
46
44
  # The timestamp of when the event occurred
47
45
  timestamp:,
48
46
  # The event type
49
- type:
47
+ type: :"payment.failed"
50
48
  )
51
49
  end
52
50
 
@@ -56,39 +54,12 @@ module Dodopayments
56
54
  business_id: String,
57
55
  data: Dodopayments::Payment,
58
56
  timestamp: Time,
59
- type: Dodopayments::PaymentFailedWebhookEvent::Type::TaggedSymbol
57
+ type: Symbol
60
58
  }
61
59
  )
62
60
  end
63
61
  def to_hash
64
62
  end
65
-
66
- # The event type
67
- module Type
68
- extend Dodopayments::Internal::Type::Enum
69
-
70
- TaggedSymbol =
71
- T.type_alias do
72
- T.all(Symbol, Dodopayments::PaymentFailedWebhookEvent::Type)
73
- end
74
- OrSymbol = T.type_alias { T.any(Symbol, String) }
75
-
76
- PAYMENT_FAILED =
77
- T.let(
78
- :"payment.failed",
79
- Dodopayments::PaymentFailedWebhookEvent::Type::TaggedSymbol
80
- )
81
-
82
- sig do
83
- override.returns(
84
- T::Array[
85
- Dodopayments::PaymentFailedWebhookEvent::Type::TaggedSymbol
86
- ]
87
- )
88
- end
89
- def self.values
90
- end
91
- end
92
63
  end
93
64
  end
94
65
  end
@@ -26,9 +26,7 @@ module Dodopayments
26
26
  attr_accessor :timestamp
27
27
 
28
28
  # The event type
29
- sig do
30
- returns(Dodopayments::PaymentProcessingWebhookEvent::Type::TaggedSymbol)
31
- end
29
+ sig { returns(Symbol) }
32
30
  attr_accessor :type
33
31
 
34
32
  sig do
@@ -36,7 +34,7 @@ module Dodopayments
36
34
  business_id: String,
37
35
  data: Dodopayments::Payment::OrHash,
38
36
  timestamp: Time,
39
- type: Dodopayments::PaymentProcessingWebhookEvent::Type::OrSymbol
37
+ type: Symbol
40
38
  ).returns(T.attached_class)
41
39
  end
42
40
  def self.new(
@@ -46,7 +44,7 @@ module Dodopayments
46
44
  # The timestamp of when the event occurred
47
45
  timestamp:,
48
46
  # The event type
49
- type:
47
+ type: :"payment.processing"
50
48
  )
51
49
  end
52
50
 
@@ -56,40 +54,12 @@ module Dodopayments
56
54
  business_id: String,
57
55
  data: Dodopayments::Payment,
58
56
  timestamp: Time,
59
- type:
60
- Dodopayments::PaymentProcessingWebhookEvent::Type::TaggedSymbol
57
+ type: Symbol
61
58
  }
62
59
  )
63
60
  end
64
61
  def to_hash
65
62
  end
66
-
67
- # The event type
68
- module Type
69
- extend Dodopayments::Internal::Type::Enum
70
-
71
- TaggedSymbol =
72
- T.type_alias do
73
- T.all(Symbol, Dodopayments::PaymentProcessingWebhookEvent::Type)
74
- end
75
- OrSymbol = T.type_alias { T.any(Symbol, String) }
76
-
77
- PAYMENT_PROCESSING =
78
- T.let(
79
- :"payment.processing",
80
- Dodopayments::PaymentProcessingWebhookEvent::Type::TaggedSymbol
81
- )
82
-
83
- sig do
84
- override.returns(
85
- T::Array[
86
- Dodopayments::PaymentProcessingWebhookEvent::Type::TaggedSymbol
87
- ]
88
- )
89
- end
90
- def self.values
91
- end
92
- end
93
63
  end
94
64
  end
95
65
  end
@@ -26,9 +26,7 @@ module Dodopayments
26
26
  attr_accessor :timestamp
27
27
 
28
28
  # The event type
29
- sig do
30
- returns(Dodopayments::PaymentSucceededWebhookEvent::Type::TaggedSymbol)
31
- end
29
+ sig { returns(Symbol) }
32
30
  attr_accessor :type
33
31
 
34
32
  sig do
@@ -36,7 +34,7 @@ module Dodopayments
36
34
  business_id: String,
37
35
  data: Dodopayments::Payment::OrHash,
38
36
  timestamp: Time,
39
- type: Dodopayments::PaymentSucceededWebhookEvent::Type::OrSymbol
37
+ type: Symbol
40
38
  ).returns(T.attached_class)
41
39
  end
42
40
  def self.new(
@@ -46,7 +44,7 @@ module Dodopayments
46
44
  # The timestamp of when the event occurred
47
45
  timestamp:,
48
46
  # The event type
49
- type:
47
+ type: :"payment.succeeded"
50
48
  )
51
49
  end
52
50
 
@@ -56,39 +54,12 @@ module Dodopayments
56
54
  business_id: String,
57
55
  data: Dodopayments::Payment,
58
56
  timestamp: Time,
59
- type: Dodopayments::PaymentSucceededWebhookEvent::Type::TaggedSymbol
57
+ type: Symbol
60
58
  }
61
59
  )
62
60
  end
63
61
  def to_hash
64
62
  end
65
-
66
- # The event type
67
- module Type
68
- extend Dodopayments::Internal::Type::Enum
69
-
70
- TaggedSymbol =
71
- T.type_alias do
72
- T.all(Symbol, Dodopayments::PaymentSucceededWebhookEvent::Type)
73
- end
74
- OrSymbol = T.type_alias { T.any(Symbol, String) }
75
-
76
- PAYMENT_SUCCEEDED =
77
- T.let(
78
- :"payment.succeeded",
79
- Dodopayments::PaymentSucceededWebhookEvent::Type::TaggedSymbol
80
- )
81
-
82
- sig do
83
- override.returns(
84
- T::Array[
85
- Dodopayments::PaymentSucceededWebhookEvent::Type::TaggedSymbol
86
- ]
87
- )
88
- end
89
- def self.values
90
- end
91
- end
92
63
  end
93
64
  end
94
65
  end
@@ -45,7 +45,7 @@ module Dodopayments
45
45
  sig { returns(T::Boolean) }
46
46
  attr_accessor :purchasing_power_parity
47
47
 
48
- sig { returns(Dodopayments::Price::OneTimePrice::Type::OrSymbol) }
48
+ sig { returns(Symbol) }
49
49
  attr_accessor :type
50
50
 
51
51
  # Indicates whether the customer can pay any amount they choose. If set to `true`,
@@ -73,10 +73,10 @@ module Dodopayments
73
73
  discount: Integer,
74
74
  price: Integer,
75
75
  purchasing_power_parity: T::Boolean,
76
- type: Dodopayments::Price::OneTimePrice::Type::OrSymbol,
77
76
  pay_what_you_want: T::Boolean,
78
77
  suggested_price: T.nilable(Integer),
79
- tax_inclusive: T.nilable(T::Boolean)
78
+ tax_inclusive: T.nilable(T::Boolean),
79
+ type: Symbol
80
80
  ).returns(T.attached_class)
81
81
  end
82
82
  def self.new(
@@ -93,7 +93,6 @@ module Dodopayments
93
93
  # Indicates if purchasing power parity adjustments are applied to the price.
94
94
  # Purchasing power parity feature is not available as of now.
95
95
  purchasing_power_parity:,
96
- type:,
97
96
  # Indicates whether the customer can pay any amount they choose. If set to `true`,
98
97
  # the [`price`](Self::price) field is the minimum amount.
99
98
  pay_what_you_want: nil,
@@ -102,7 +101,8 @@ module Dodopayments
102
101
  # ignored.
103
102
  suggested_price: nil,
104
103
  # Indicates if the price is tax inclusive.
105
- tax_inclusive: nil
104
+ tax_inclusive: nil,
105
+ type: :one_time_price
106
106
  )
107
107
  end
108
108
 
@@ -113,7 +113,7 @@ module Dodopayments
113
113
  discount: Integer,
114
114
  price: Integer,
115
115
  purchasing_power_parity: T::Boolean,
116
- type: Dodopayments::Price::OneTimePrice::Type::OrSymbol,
116
+ type: Symbol,
117
117
  pay_what_you_want: T::Boolean,
118
118
  suggested_price: T.nilable(Integer),
119
119
  tax_inclusive: T.nilable(T::Boolean)
@@ -122,30 +122,6 @@ module Dodopayments
122
122
  end
123
123
  def to_hash
124
124
  end
125
-
126
- module Type
127
- extend Dodopayments::Internal::Type::Enum
128
-
129
- TaggedSymbol =
130
- T.type_alias do
131
- T.all(Symbol, Dodopayments::Price::OneTimePrice::Type)
132
- end
133
- OrSymbol = T.type_alias { T.any(Symbol, String) }
134
-
135
- ONE_TIME_PRICE =
136
- T.let(
137
- :one_time_price,
138
- Dodopayments::Price::OneTimePrice::Type::TaggedSymbol
139
- )
140
-
141
- sig do
142
- override.returns(
143
- T::Array[Dodopayments::Price::OneTimePrice::Type::TaggedSymbol]
144
- )
145
- end
146
- def self.values
147
- end
148
- end
149
125
  end
150
126
 
151
127
  class RecurringPrice < Dodopayments::Internal::Type::BaseModel
@@ -193,7 +169,7 @@ module Dodopayments
193
169
  sig { returns(Dodopayments::TimeInterval::OrSymbol) }
194
170
  attr_accessor :subscription_period_interval
195
171
 
196
- sig { returns(Dodopayments::Price::RecurringPrice::Type::OrSymbol) }
172
+ sig { returns(Symbol) }
197
173
  attr_accessor :type
198
174
 
199
175
  # Indicates if the price is tax inclusive
@@ -218,9 +194,9 @@ module Dodopayments
218
194
  purchasing_power_parity: T::Boolean,
219
195
  subscription_period_count: Integer,
220
196
  subscription_period_interval: Dodopayments::TimeInterval::OrSymbol,
221
- type: Dodopayments::Price::RecurringPrice::Type::OrSymbol,
222
197
  tax_inclusive: T.nilable(T::Boolean),
223
- trial_period_days: Integer
198
+ trial_period_days: Integer,
199
+ type: Symbol
224
200
  ).returns(T.attached_class)
225
201
  end
226
202
  def self.new(
@@ -244,11 +220,11 @@ module Dodopayments
244
220
  subscription_period_count:,
245
221
  # The time interval for the subscription period (e.g., day, month, year).
246
222
  subscription_period_interval:,
247
- type:,
248
223
  # Indicates if the price is tax inclusive
249
224
  tax_inclusive: nil,
250
225
  # Number of days for the trial period. A value of `0` indicates no trial period.
251
- trial_period_days: nil
226
+ trial_period_days: nil,
227
+ type: :recurring_price
252
228
  )
253
229
  end
254
230
 
@@ -264,7 +240,7 @@ module Dodopayments
264
240
  subscription_period_count: Integer,
265
241
  subscription_period_interval:
266
242
  Dodopayments::TimeInterval::OrSymbol,
267
- type: Dodopayments::Price::RecurringPrice::Type::OrSymbol,
243
+ type: Symbol,
268
244
  tax_inclusive: T.nilable(T::Boolean),
269
245
  trial_period_days: Integer
270
246
  }
@@ -272,30 +248,6 @@ module Dodopayments
272
248
  end
273
249
  def to_hash
274
250
  end
275
-
276
- module Type
277
- extend Dodopayments::Internal::Type::Enum
278
-
279
- TaggedSymbol =
280
- T.type_alias do
281
- T.all(Symbol, Dodopayments::Price::RecurringPrice::Type)
282
- end
283
- OrSymbol = T.type_alias { T.any(Symbol, String) }
284
-
285
- RECURRING_PRICE =
286
- T.let(
287
- :recurring_price,
288
- Dodopayments::Price::RecurringPrice::Type::TaggedSymbol
289
- )
290
-
291
- sig do
292
- override.returns(
293
- T::Array[Dodopayments::Price::RecurringPrice::Type::TaggedSymbol]
294
- )
295
- end
296
- def self.values
297
- end
298
- end
299
251
  end
300
252
 
301
253
  class UsageBasedPrice < Dodopayments::Internal::Type::BaseModel
@@ -343,7 +295,7 @@ module Dodopayments
343
295
  sig { returns(Dodopayments::TimeInterval::OrSymbol) }
344
296
  attr_accessor :subscription_period_interval
345
297
 
346
- sig { returns(Dodopayments::Price::UsageBasedPrice::Type::OrSymbol) }
298
+ sig { returns(Symbol) }
347
299
  attr_accessor :type
348
300
 
349
301
  sig { returns(T.nilable(T::Array[Dodopayments::AddMeterToPrice])) }
@@ -364,9 +316,9 @@ module Dodopayments
364
316
  purchasing_power_parity: T::Boolean,
365
317
  subscription_period_count: Integer,
366
318
  subscription_period_interval: Dodopayments::TimeInterval::OrSymbol,
367
- type: Dodopayments::Price::UsageBasedPrice::Type::OrSymbol,
368
319
  meters: T.nilable(T::Array[Dodopayments::AddMeterToPrice::OrHash]),
369
- tax_inclusive: T.nilable(T::Boolean)
320
+ tax_inclusive: T.nilable(T::Boolean),
321
+ type: Symbol
370
322
  ).returns(T.attached_class)
371
323
  end
372
324
  def self.new(
@@ -390,10 +342,10 @@ module Dodopayments
390
342
  subscription_period_count:,
391
343
  # The time interval for the subscription period (e.g., day, month, year).
392
344
  subscription_period_interval:,
393
- type:,
394
345
  meters: nil,
395
346
  # Indicates if the price is tax inclusive
396
- tax_inclusive: nil
347
+ tax_inclusive: nil,
348
+ type: :usage_based_price
397
349
  )
398
350
  end
399
351
 
@@ -409,7 +361,7 @@ module Dodopayments
409
361
  subscription_period_count: Integer,
410
362
  subscription_period_interval:
411
363
  Dodopayments::TimeInterval::OrSymbol,
412
- type: Dodopayments::Price::UsageBasedPrice::Type::OrSymbol,
364
+ type: Symbol,
413
365
  meters: T.nilable(T::Array[Dodopayments::AddMeterToPrice]),
414
366
  tax_inclusive: T.nilable(T::Boolean)
415
367
  }
@@ -417,30 +369,6 @@ module Dodopayments
417
369
  end
418
370
  def to_hash
419
371
  end
420
-
421
- module Type
422
- extend Dodopayments::Internal::Type::Enum
423
-
424
- TaggedSymbol =
425
- T.type_alias do
426
- T.all(Symbol, Dodopayments::Price::UsageBasedPrice::Type)
427
- end
428
- OrSymbol = T.type_alias { T.any(Symbol, String) }
429
-
430
- USAGE_BASED_PRICE =
431
- T.let(
432
- :usage_based_price,
433
- Dodopayments::Price::UsageBasedPrice::Type::TaggedSymbol
434
- )
435
-
436
- sig do
437
- override.returns(
438
- T::Array[Dodopayments::Price::UsageBasedPrice::Type::TaggedSymbol]
439
- )
440
- end
441
- def self.values
442
- end
443
- end
444
372
  end
445
373
 
446
374
  sig { override.returns(T::Array[Dodopayments::Price::Variants]) }
@@ -63,10 +63,8 @@ module Dodopayments
63
63
  sig { returns(T.nilable(String)) }
64
64
  attr_accessor :description
65
65
 
66
- # Digital-product-delivery payload for a grant. Populated for grants whose
67
- # entitlement has `integration_type = 'digital_files'`. `files` carries presigned
68
- # download URLs; the source (EE service or legacy in-process S3 presigning) is
69
- # opaque to the caller.
66
+ # Digital-product-delivery payload, present on grants for `digital_files`
67
+ # entitlements. Each file carries a short-lived presigned download URL.
70
68
  sig { returns(T.nilable(Dodopayments::DigitalProductDelivery)) }
71
69
  attr_reader :digital_product_delivery
72
70
 
@@ -172,10 +170,8 @@ module Dodopayments
172
170
  addons: nil,
173
171
  # Description of the product, optional.
174
172
  description: nil,
175
- # Digital-product-delivery payload for a grant. Populated for grants whose
176
- # entitlement has `integration_type = 'digital_files'`. `files` carries presigned
177
- # download URLs; the source (EE service or legacy in-process S3 presigning) is
178
- # opaque to the caller.
173
+ # Digital-product-delivery payload, present on grants for `digital_files`
174
+ # entitlements. Each file carries a short-lived presigned download URL.
179
175
  digital_product_delivery: nil,
180
176
  # URL of the product image, optional.
181
177
  image: nil,
@@ -14,10 +14,10 @@ module Dodopayments
14
14
  sig { returns(String) }
15
15
  attr_accessor :id
16
16
 
17
- # Public-facing variant of [`IntegrationConfig`]. Mirrors every variant shape on
18
- # the wire EXCEPT `DigitalFiles`, which is replaced with a hydrated
19
- # `digital_files` object (resolved download URLs etc.). The persisted JSONB stays
20
- # ID-only via [`IntegrationConfig`]; this enum is response-only.
17
+ # Integration-specific configuration on an entitlement read response.
18
+ #
19
+ # For `digital_files` entitlements the response includes presigned download URLs
20
+ # for each attached file; other integrations match the shape supplied at creation.
21
21
  sig { returns(Dodopayments::IntegrationConfigResponse::Variants) }
22
22
  attr_accessor :integration_config
23
23
 
@@ -57,10 +57,10 @@ module Dodopayments
57
57
  end
58
58
  def self.new(
59
59
  id:,
60
- # Public-facing variant of [`IntegrationConfig`]. Mirrors every variant shape on
61
- # the wire EXCEPT `DigitalFiles`, which is replaced with a hydrated
62
- # `digital_files` object (resolved download URLs etc.). The persisted JSONB stays
63
- # ID-only via [`IntegrationConfig`]; this enum is response-only.
60
+ # Integration-specific configuration on an entitlement read response.
61
+ #
62
+ # For `digital_files` entitlements the response includes presigned download URLs
63
+ # for each attached file; other integrations match the shape supplied at creation.
64
64
  integration_config:,
65
65
  integration_type:,
66
66
  name:,