dodopayments 2.26.0 → 2.28.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 (205) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/client.rb +4 -0
  5. data/lib/dodopayments/internal/type/union.rb +15 -5
  6. data/lib/dodopayments/models/balance_ledger_entry.rb +9 -1
  7. data/lib/dodopayments/models/balance_retrieve_ledger_params.rb +2 -0
  8. data/lib/dodopayments/models/blocklist/block_by_customer_id.rb +18 -0
  9. data/lib/dodopayments/models/blocklist/block_by_email.rb +18 -0
  10. data/lib/dodopayments/models/blocklist/block_identifier.rb +21 -0
  11. data/lib/dodopayments/models/blocklist/blocked_customer.rb +128 -0
  12. data/lib/dodopayments/models/blocklist/blocked_customer_source.rb +22 -0
  13. data/lib/dodopayments/models/blocklist/create_blocked_customer_request.rb +66 -0
  14. data/lib/dodopayments/models/blocklist/customer_create_params.rb +16 -0
  15. data/lib/dodopayments/models/blocklist/customer_delete_params.rb +22 -0
  16. data/lib/dodopayments/models/blocklist/customer_list_params.rb +64 -0
  17. data/lib/dodopayments/models/blocklist/customer_retrieve_params.rb +22 -0
  18. data/lib/dodopayments/models/blocklist/customers/blocked_customer_note.rb +44 -0
  19. data/lib/dodopayments/models/blocklist/customers/note_create_params.rb +24 -0
  20. data/lib/dodopayments/models/blocklist/customers/note_request.rb +19 -0
  21. data/lib/dodopayments/models/blocklist/customers/note_update_params.rb +30 -0
  22. data/lib/dodopayments/models/checkout_session_preview_response.rb +10 -1
  23. data/lib/dodopayments/models/credit_entitlements/balance_create_ledger_entry_params.rb +1 -1
  24. data/lib/dodopayments/models/credit_entitlements/balance_create_ledger_entry_response.rb +21 -1
  25. data/lib/dodopayments/models/credit_entitlements/credit_ledger_entry.rb +2 -7
  26. data/lib/dodopayments/models/customer.rb +22 -1
  27. data/lib/dodopayments/models/customers/email_body.rb +57 -0
  28. data/lib/dodopayments/models/customers/email_failure_code.rb +27 -0
  29. data/lib/dodopayments/models/customers/email_list_params.rb +39 -0
  30. data/lib/dodopayments/models/customers/email_log_item.rb +121 -0
  31. data/lib/dodopayments/models/customers/email_log_status.rb +24 -0
  32. data/lib/dodopayments/models/customers/email_policies.rb +45 -0
  33. data/lib/dodopayments/models/customers/email_retrieve_body_params.rb +28 -0
  34. data/lib/dodopayments/models/dunning_recovered_webhook_event.rb +1 -0
  35. data/lib/dodopayments/models/dunning_started_webhook_event.rb +1 -0
  36. data/lib/dodopayments/models/manual_retry.rb +76 -0
  37. data/lib/dodopayments/models/manual_retry_state.rb +50 -0
  38. data/lib/dodopayments/models/payment_retrieve_retry_state_params.rb +20 -0
  39. data/lib/dodopayments/models/payment_retry_params.rb +20 -0
  40. data/lib/dodopayments/models/price.rb +95 -27
  41. data/lib/dodopayments/models/subscription.rb +10 -1
  42. data/lib/dodopayments/models/subscription_active_webhook_event.rb +32 -4
  43. data/lib/dodopayments/models/subscription_cancelled_webhook_event.rb +33 -4
  44. data/lib/dodopayments/models/subscription_create_response.rb +10 -1
  45. data/lib/dodopayments/models/subscription_expired_webhook_event.rb +32 -4
  46. data/lib/dodopayments/models/subscription_failed_webhook_event.rb +32 -4
  47. data/lib/dodopayments/models/subscription_list_params.rb +1 -0
  48. data/lib/dodopayments/models/subscription_list_response.rb +10 -1
  49. data/lib/dodopayments/models/subscription_on_hold_webhook_event.rb +32 -4
  50. data/lib/dodopayments/models/subscription_past_due_webhook_event.rb +68 -0
  51. data/lib/dodopayments/models/subscription_paused_webhook_event.rb +32 -4
  52. data/lib/dodopayments/models/subscription_plan_changed_webhook_event.rb +33 -4
  53. data/lib/dodopayments/models/subscription_renewed_webhook_event.rb +32 -4
  54. data/lib/dodopayments/models/subscription_status.rb +1 -0
  55. data/lib/dodopayments/models/subscription_unpaused_webhook_event.rb +32 -4
  56. data/lib/dodopayments/models/subscription_update_params.rb +1 -0
  57. data/lib/dodopayments/models/subscription_update_payment_method_webhook_event.rb +34 -4
  58. data/lib/dodopayments/models/subscription_updated_webhook_event.rb +32 -4
  59. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +3 -1
  60. data/lib/dodopayments/models/unwrap_webhook_event.rb +3 -1
  61. data/lib/dodopayments/models/webhook_event_type.rb +1 -0
  62. data/lib/dodopayments/models/webhook_payload.rb +19 -1
  63. data/lib/dodopayments/models.rb +12 -0
  64. data/lib/dodopayments/resources/blocklist/customers/notes.rb +68 -0
  65. data/lib/dodopayments/resources/blocklist/customers.rb +107 -0
  66. data/lib/dodopayments/resources/blocklist.rb +18 -0
  67. data/lib/dodopayments/resources/credit_entitlements/balances.rb +1 -0
  68. data/lib/dodopayments/resources/customers/emails.rb +76 -0
  69. data/lib/dodopayments/resources/customers.rb +4 -0
  70. data/lib/dodopayments/resources/payments.rb +36 -0
  71. data/lib/dodopayments/resources/webhooks.rb +2 -2
  72. data/lib/dodopayments/version.rb +1 -1
  73. data/lib/dodopayments.rb +31 -1
  74. data/rbi/dodopayments/client.rbi +3 -0
  75. data/rbi/dodopayments/models/balance_ledger_entry.rbi +16 -0
  76. data/rbi/dodopayments/models/balance_retrieve_ledger_params.rbi +10 -0
  77. data/rbi/dodopayments/models/blocklist/block_by_customer_id.rbi +32 -0
  78. data/rbi/dodopayments/models/blocklist/block_by_email.rbi +32 -0
  79. data/rbi/dodopayments/models/blocklist/block_identifier.rbi +30 -0
  80. data/rbi/dodopayments/models/blocklist/blocked_customer.rbi +161 -0
  81. data/rbi/dodopayments/models/blocklist/blocked_customer_source.rbi +55 -0
  82. data/rbi/dodopayments/models/blocklist/create_blocked_customer_request.rbi +143 -0
  83. data/rbi/dodopayments/models/blocklist/customer_create_params.rbi +34 -0
  84. data/rbi/dodopayments/models/blocklist/customer_delete_params.rbi +40 -0
  85. data/rbi/dodopayments/models/blocklist/customer_list_params.rbi +88 -0
  86. data/rbi/dodopayments/models/blocklist/customer_retrieve_params.rbi +40 -0
  87. data/rbi/dodopayments/models/blocklist/customers/blocked_customer_note.rbi +66 -0
  88. data/rbi/dodopayments/models/blocklist/customers/note_create_params.rbi +45 -0
  89. data/rbi/dodopayments/models/blocklist/customers/note_request.rbi +30 -0
  90. data/rbi/dodopayments/models/blocklist/customers/note_update_params.rbi +50 -0
  91. data/rbi/dodopayments/models/checkout_session_preview_response.rbi +10 -0
  92. data/rbi/dodopayments/models/credit_entitlements/balance_create_ledger_entry_params.rbi +2 -2
  93. data/rbi/dodopayments/models/credit_entitlements/balance_create_ledger_entry_response.rbi +8 -0
  94. data/rbi/dodopayments/models/credit_entitlements/credit_ledger_entry.rbi +2 -6
  95. data/rbi/dodopayments/models/customer.rbi +20 -0
  96. data/rbi/dodopayments/models/customers/email_body.rbi +88 -0
  97. data/rbi/dodopayments/models/customers/email_failure_code.rbi +70 -0
  98. data/rbi/dodopayments/models/customers/email_list_params.rbi +68 -0
  99. data/rbi/dodopayments/models/customers/email_log_item.rbi +157 -0
  100. data/rbi/dodopayments/models/customers/email_log_status.rbi +46 -0
  101. data/rbi/dodopayments/models/customers/email_policies.rbi +68 -0
  102. data/rbi/dodopayments/models/customers/email_retrieve_body_params.rbi +48 -0
  103. data/rbi/dodopayments/models/dunning_recovered_webhook_event.rbi +5 -0
  104. data/rbi/dodopayments/models/dunning_started_webhook_event.rbi +5 -0
  105. data/rbi/dodopayments/models/manual_retry.rbi +93 -0
  106. data/rbi/dodopayments/models/manual_retry_state.rbi +65 -0
  107. data/rbi/dodopayments/models/payment_retrieve_retry_state_params.rbi +38 -0
  108. data/rbi/dodopayments/models/payment_retry_params.rbi +38 -0
  109. data/rbi/dodopayments/models/price.rbi +124 -25
  110. data/rbi/dodopayments/models/subscription.rbi +10 -0
  111. data/rbi/dodopayments/models/subscription_active_webhook_event.rbi +53 -6
  112. data/rbi/dodopayments/models/subscription_cancelled_webhook_event.rbi +53 -6
  113. data/rbi/dodopayments/models/subscription_create_response.rbi +10 -0
  114. data/rbi/dodopayments/models/subscription_expired_webhook_event.rbi +53 -6
  115. data/rbi/dodopayments/models/subscription_failed_webhook_event.rbi +53 -6
  116. data/rbi/dodopayments/models/subscription_list_params.rbi +5 -0
  117. data/rbi/dodopayments/models/subscription_list_response.rbi +10 -0
  118. data/rbi/dodopayments/models/subscription_on_hold_webhook_event.rbi +53 -6
  119. data/rbi/dodopayments/models/subscription_past_due_webhook_event.rbi +114 -0
  120. data/rbi/dodopayments/models/subscription_paused_webhook_event.rbi +53 -6
  121. data/rbi/dodopayments/models/subscription_plan_changed_webhook_event.rbi +53 -6
  122. data/rbi/dodopayments/models/subscription_renewed_webhook_event.rbi +53 -6
  123. data/rbi/dodopayments/models/subscription_status.rbi +2 -0
  124. data/rbi/dodopayments/models/subscription_unpaused_webhook_event.rbi +53 -6
  125. data/rbi/dodopayments/models/subscription_update_params.rbi +5 -0
  126. data/rbi/dodopayments/models/subscription_update_payment_method_webhook_event.rbi +58 -6
  127. data/rbi/dodopayments/models/subscription_updated_webhook_event.rbi +53 -6
  128. data/rbi/dodopayments/models/unsafe_unwrap_webhook_event.rbi +1 -0
  129. data/rbi/dodopayments/models/unwrap_webhook_event.rbi +1 -0
  130. data/rbi/dodopayments/models/webhook_event_type.rbi +5 -0
  131. data/rbi/dodopayments/models/webhook_payload.rbi +37 -3
  132. data/rbi/dodopayments/models.rbi +14 -0
  133. data/rbi/dodopayments/resources/blocklist/customers/notes.rbi +50 -0
  134. data/rbi/dodopayments/resources/blocklist/customers.rbi +88 -0
  135. data/rbi/dodopayments/resources/blocklist.rbi +15 -0
  136. data/rbi/dodopayments/resources/credit_entitlements/balances.rbi +2 -1
  137. data/rbi/dodopayments/resources/customers/emails.rbi +60 -0
  138. data/rbi/dodopayments/resources/customers.rbi +3 -0
  139. data/rbi/dodopayments/resources/payments.rbi +26 -0
  140. data/rbi/dodopayments/resources/webhooks.rbi +2 -0
  141. data/sig/dodopayments/client.rbs +2 -0
  142. data/sig/dodopayments/models/balance_ledger_entry.rbs +9 -0
  143. data/sig/dodopayments/models/balance_retrieve_ledger_params.rbs +4 -0
  144. data/sig/dodopayments/models/blocklist/block_by_customer_id.rbs +15 -0
  145. data/sig/dodopayments/models/blocklist/block_by_email.rbs +15 -0
  146. data/sig/dodopayments/models/blocklist/block_identifier.rbs +15 -0
  147. data/sig/dodopayments/models/blocklist/blocked_customer.rbs +87 -0
  148. data/sig/dodopayments/models/blocklist/blocked_customer_source.rbs +20 -0
  149. data/sig/dodopayments/models/blocklist/create_blocked_customer_request.rbs +71 -0
  150. data/sig/dodopayments/models/blocklist/customer_create_params.rbs +17 -0
  151. data/sig/dodopayments/models/blocklist/customer_delete_params.rbs +25 -0
  152. data/sig/dodopayments/models/blocklist/customer_list_params.rbs +53 -0
  153. data/sig/dodopayments/models/blocklist/customer_retrieve_params.rbs +25 -0
  154. data/sig/dodopayments/models/blocklist/customers/blocked_customer_note.rbs +44 -0
  155. data/sig/dodopayments/models/blocklist/customers/note_create_params.rbs +30 -0
  156. data/sig/dodopayments/models/blocklist/customers/note_request.rbs +17 -0
  157. data/sig/dodopayments/models/blocklist/customers/note_update_params.rbs +36 -0
  158. data/sig/dodopayments/models/checkout_session_preview_response.rbs +5 -0
  159. data/sig/dodopayments/models/credit_entitlements/balance_create_ledger_entry_response.rbs +5 -0
  160. data/sig/dodopayments/models/customer.rbs +10 -0
  161. data/sig/dodopayments/models/customers/email_body.rbs +42 -0
  162. data/sig/dodopayments/models/customers/email_failure_code.rbs +30 -0
  163. data/sig/dodopayments/models/customers/email_list_params.rbs +38 -0
  164. data/sig/dodopayments/models/customers/email_log_item.rbs +82 -0
  165. data/sig/dodopayments/models/customers/email_log_status.rbs +20 -0
  166. data/sig/dodopayments/models/customers/email_policies.rbs +37 -0
  167. data/sig/dodopayments/models/customers/email_retrieve_body_params.rbs +30 -0
  168. data/sig/dodopayments/models/dunning_recovered_webhook_event.rbs +2 -1
  169. data/sig/dodopayments/models/dunning_started_webhook_event.rbs +2 -1
  170. data/sig/dodopayments/models/manual_retry.rbs +55 -0
  171. data/sig/dodopayments/models/manual_retry_state.rbs +40 -0
  172. data/sig/dodopayments/models/payment_retrieve_retry_state_params.rbs +23 -0
  173. data/sig/dodopayments/models/payment_retry_params.rbs +23 -0
  174. data/sig/dodopayments/models/price.rbs +52 -17
  175. data/sig/dodopayments/models/subscription.rbs +5 -0
  176. data/sig/dodopayments/models/subscription_active_webhook_event.rbs +16 -4
  177. data/sig/dodopayments/models/subscription_cancelled_webhook_event.rbs +16 -4
  178. data/sig/dodopayments/models/subscription_create_response.rbs +5 -0
  179. data/sig/dodopayments/models/subscription_expired_webhook_event.rbs +16 -4
  180. data/sig/dodopayments/models/subscription_failed_webhook_event.rbs +16 -4
  181. data/sig/dodopayments/models/subscription_list_params.rbs +2 -0
  182. data/sig/dodopayments/models/subscription_list_response.rbs +5 -0
  183. data/sig/dodopayments/models/subscription_on_hold_webhook_event.rbs +16 -4
  184. data/sig/dodopayments/models/subscription_past_due_webhook_event.rbs +47 -0
  185. data/sig/dodopayments/models/subscription_paused_webhook_event.rbs +16 -4
  186. data/sig/dodopayments/models/subscription_plan_changed_webhook_event.rbs +16 -4
  187. data/sig/dodopayments/models/subscription_renewed_webhook_event.rbs +16 -4
  188. data/sig/dodopayments/models/subscription_status.rbs +9 -1
  189. data/sig/dodopayments/models/subscription_unpaused_webhook_event.rbs +16 -4
  190. data/sig/dodopayments/models/subscription_update_params.rbs +2 -0
  191. data/sig/dodopayments/models/subscription_update_payment_method_webhook_event.rbs +16 -4
  192. data/sig/dodopayments/models/subscription_updated_webhook_event.rbs +16 -4
  193. data/sig/dodopayments/models/unsafe_unwrap_webhook_event.rbs +1 -0
  194. data/sig/dodopayments/models/unwrap_webhook_event.rbs +1 -0
  195. data/sig/dodopayments/models/webhook_event_type.rbs +2 -0
  196. data/sig/dodopayments/models/webhook_payload.rbs +16 -4
  197. data/sig/dodopayments/models.rbs +12 -0
  198. data/sig/dodopayments/resources/blocklist/customers/notes.rbs +24 -0
  199. data/sig/dodopayments/resources/blocklist/customers.rbs +36 -0
  200. data/sig/dodopayments/resources/blocklist.rbs +9 -0
  201. data/sig/dodopayments/resources/customers/emails.rbs +22 -0
  202. data/sig/dodopayments/resources/customers.rbs +2 -0
  203. data/sig/dodopayments/resources/payments.rbs +10 -0
  204. data/sig/dodopayments/resources/webhooks.rbs +2 -0
  205. metadata +92 -2
@@ -15,11 +15,16 @@ module Dodopayments
15
15
  sig { returns(String) }
16
16
  attr_accessor :business_id
17
17
 
18
- # Response struct representing subscription details
19
- sig { returns(Dodopayments::Subscription) }
18
+ # Subscription payload sent on a webhook. It carries every field of
19
+ # `SubscriptionResponse`, plus the grace-period deadline.
20
+ sig { returns(Dodopayments::SubscriptionFailedWebhookEvent::Data) }
20
21
  attr_reader :data
21
22
 
22
- sig { params(data: Dodopayments::Subscription::OrHash).void }
23
+ sig do
24
+ params(
25
+ data: Dodopayments::SubscriptionFailedWebhookEvent::Data::OrHash
26
+ ).void
27
+ end
23
28
  attr_writer :data
24
29
 
25
30
  # The timestamp of when the event occurred
@@ -33,7 +38,7 @@ module Dodopayments
33
38
  sig do
34
39
  params(
35
40
  business_id: String,
36
- data: Dodopayments::Subscription::OrHash,
41
+ data: Dodopayments::SubscriptionFailedWebhookEvent::Data::OrHash,
37
42
  timestamp: Time,
38
43
  type: Symbol
39
44
  ).returns(T.attached_class)
@@ -41,7 +46,8 @@ module Dodopayments
41
46
  def self.new(
42
47
  # The business identifier
43
48
  business_id:,
44
- # Response struct representing subscription details
49
+ # Subscription payload sent on a webhook. It carries every field of
50
+ # `SubscriptionResponse`, plus the grace-period deadline.
45
51
  data:,
46
52
  # The timestamp of when the event occurred
47
53
  timestamp:,
@@ -54,7 +60,7 @@ module Dodopayments
54
60
  override.returns(
55
61
  {
56
62
  business_id: String,
57
- data: Dodopayments::Subscription,
63
+ data: Dodopayments::SubscriptionFailedWebhookEvent::Data,
58
64
  timestamp: Time,
59
65
  type: Symbol
60
66
  }
@@ -62,6 +68,47 @@ module Dodopayments
62
68
  end
63
69
  def to_hash
64
70
  end
71
+
72
+ class Data < Dodopayments::Models::Subscription
73
+ OrHash =
74
+ T.type_alias do
75
+ T.any(
76
+ Dodopayments::SubscriptionFailedWebhookEvent::Data,
77
+ Dodopayments::Internal::AnyHash
78
+ )
79
+ end
80
+
81
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
82
+ # `cancelled` at this time.
83
+ #
84
+ # Read in the same query as the rest of the payload, so it always comes from the
85
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
86
+ # a window at that moment. A delayed event of another type therefore carries the
87
+ # deadline too, next to a `past_due` status.
88
+ sig { returns(T.nilable(Time)) }
89
+ attr_accessor :past_due_ends_at
90
+
91
+ # Subscription payload sent on a webhook. It carries every field of
92
+ # `SubscriptionResponse`, plus the grace-period deadline.
93
+ sig do
94
+ params(past_due_ends_at: T.nilable(Time)).returns(T.attached_class)
95
+ end
96
+ def self.new(
97
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
98
+ # `cancelled` at this time.
99
+ #
100
+ # Read in the same query as the rest of the payload, so it always comes from the
101
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
102
+ # a window at that moment. A delayed event of another type therefore carries the
103
+ # deadline too, next to a `past_due` status.
104
+ past_due_ends_at: nil
105
+ )
106
+ end
107
+
108
+ sig { override.returns({ past_due_ends_at: T.nilable(Time) }) }
109
+ def to_hash
110
+ end
111
+ end
65
112
  end
66
113
  end
67
114
  end
@@ -186,6 +186,11 @@ module Dodopayments
186
186
  :expired,
187
187
  Dodopayments::SubscriptionListParams::Status::TaggedSymbol
188
188
  )
189
+ PAST_DUE =
190
+ T.let(
191
+ :past_due,
192
+ Dodopayments::SubscriptionListParams::Status::TaggedSymbol
193
+ )
189
194
 
190
195
  sig do
191
196
  override.returns(
@@ -47,6 +47,11 @@ module Dodopayments
47
47
  end
48
48
  attr_accessor :discounts
49
49
 
50
+ # Whether a payment method is on file. False while a card-optional subscription
51
+ # waits for the customer to add one.
52
+ sig { returns(T::Boolean) }
53
+ attr_accessor :has_payment_method
54
+
50
55
  # Additional custom data associated with the subscription
51
56
  sig { returns(T::Hash[Symbol, Dodopayments::MetadataItem::Variants]) }
52
57
  attr_accessor :metadata
@@ -172,6 +177,7 @@ module Dodopayments
172
177
  T::Array[
173
178
  Dodopayments::Models::SubscriptionListResponse::Discount::OrHash
174
179
  ],
180
+ has_payment_method: T::Boolean,
175
181
  metadata: T::Hash[Symbol, Dodopayments::MetadataItem::Variants],
176
182
  next_billing_date: Time,
177
183
  on_demand: T::Boolean,
@@ -213,6 +219,9 @@ module Dodopayments
213
219
  customer:,
214
220
  # All stacked discounts applied, in order of application
215
221
  discounts:,
222
+ # Whether a payment method is on file. False while a card-optional subscription
223
+ # waits for the customer to add one.
224
+ has_payment_method:,
216
225
  # Additional custom data associated with the subscription
217
226
  metadata:,
218
227
  # Timestamp of the next scheduled billing. Indicates the end of current billing
@@ -284,6 +293,7 @@ module Dodopayments
284
293
  T::Array[
285
294
  Dodopayments::Models::SubscriptionListResponse::Discount
286
295
  ],
296
+ has_payment_method: T::Boolean,
287
297
  metadata: T::Hash[Symbol, Dodopayments::MetadataItem::Variants],
288
298
  next_billing_date: Time,
289
299
  on_demand: T::Boolean,
@@ -15,11 +15,16 @@ module Dodopayments
15
15
  sig { returns(String) }
16
16
  attr_accessor :business_id
17
17
 
18
- # Response struct representing subscription details
19
- sig { returns(Dodopayments::Subscription) }
18
+ # Subscription payload sent on a webhook. It carries every field of
19
+ # `SubscriptionResponse`, plus the grace-period deadline.
20
+ sig { returns(Dodopayments::SubscriptionOnHoldWebhookEvent::Data) }
20
21
  attr_reader :data
21
22
 
22
- sig { params(data: Dodopayments::Subscription::OrHash).void }
23
+ sig do
24
+ params(
25
+ data: Dodopayments::SubscriptionOnHoldWebhookEvent::Data::OrHash
26
+ ).void
27
+ end
23
28
  attr_writer :data
24
29
 
25
30
  # The timestamp of when the event occurred
@@ -33,7 +38,7 @@ module Dodopayments
33
38
  sig do
34
39
  params(
35
40
  business_id: String,
36
- data: Dodopayments::Subscription::OrHash,
41
+ data: Dodopayments::SubscriptionOnHoldWebhookEvent::Data::OrHash,
37
42
  timestamp: Time,
38
43
  type: Symbol
39
44
  ).returns(T.attached_class)
@@ -41,7 +46,8 @@ module Dodopayments
41
46
  def self.new(
42
47
  # The business identifier
43
48
  business_id:,
44
- # Response struct representing subscription details
49
+ # Subscription payload sent on a webhook. It carries every field of
50
+ # `SubscriptionResponse`, plus the grace-period deadline.
45
51
  data:,
46
52
  # The timestamp of when the event occurred
47
53
  timestamp:,
@@ -54,7 +60,7 @@ module Dodopayments
54
60
  override.returns(
55
61
  {
56
62
  business_id: String,
57
- data: Dodopayments::Subscription,
63
+ data: Dodopayments::SubscriptionOnHoldWebhookEvent::Data,
58
64
  timestamp: Time,
59
65
  type: Symbol
60
66
  }
@@ -62,6 +68,47 @@ module Dodopayments
62
68
  end
63
69
  def to_hash
64
70
  end
71
+
72
+ class Data < Dodopayments::Models::Subscription
73
+ OrHash =
74
+ T.type_alias do
75
+ T.any(
76
+ Dodopayments::SubscriptionOnHoldWebhookEvent::Data,
77
+ Dodopayments::Internal::AnyHash
78
+ )
79
+ end
80
+
81
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
82
+ # `cancelled` at this time.
83
+ #
84
+ # Read in the same query as the rest of the payload, so it always comes from the
85
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
86
+ # a window at that moment. A delayed event of another type therefore carries the
87
+ # deadline too, next to a `past_due` status.
88
+ sig { returns(T.nilable(Time)) }
89
+ attr_accessor :past_due_ends_at
90
+
91
+ # Subscription payload sent on a webhook. It carries every field of
92
+ # `SubscriptionResponse`, plus the grace-period deadline.
93
+ sig do
94
+ params(past_due_ends_at: T.nilable(Time)).returns(T.attached_class)
95
+ end
96
+ def self.new(
97
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
98
+ # `cancelled` at this time.
99
+ #
100
+ # Read in the same query as the rest of the payload, so it always comes from the
101
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
102
+ # a window at that moment. A delayed event of another type therefore carries the
103
+ # deadline too, next to a `past_due` status.
104
+ past_due_ends_at: nil
105
+ )
106
+ end
107
+
108
+ sig { override.returns({ past_due_ends_at: T.nilable(Time) }) }
109
+ def to_hash
110
+ end
111
+ end
65
112
  end
66
113
  end
67
114
  end
@@ -0,0 +1,114 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class SubscriptionPastDueWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::SubscriptionPastDueWebhookEvent,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The business identifier
15
+ sig { returns(String) }
16
+ attr_accessor :business_id
17
+
18
+ # Subscription payload sent on a webhook. It carries every field of
19
+ # `SubscriptionResponse`, plus the grace-period deadline.
20
+ sig { returns(Dodopayments::SubscriptionPastDueWebhookEvent::Data) }
21
+ attr_reader :data
22
+
23
+ sig do
24
+ params(
25
+ data: Dodopayments::SubscriptionPastDueWebhookEvent::Data::OrHash
26
+ ).void
27
+ end
28
+ attr_writer :data
29
+
30
+ # The timestamp of when the event occurred
31
+ sig { returns(Time) }
32
+ attr_accessor :timestamp
33
+
34
+ # The event type
35
+ sig { returns(Symbol) }
36
+ attr_accessor :type
37
+
38
+ sig do
39
+ params(
40
+ business_id: String,
41
+ data: Dodopayments::SubscriptionPastDueWebhookEvent::Data::OrHash,
42
+ timestamp: Time,
43
+ type: Symbol
44
+ ).returns(T.attached_class)
45
+ end
46
+ def self.new(
47
+ # The business identifier
48
+ business_id:,
49
+ # Subscription payload sent on a webhook. It carries every field of
50
+ # `SubscriptionResponse`, plus the grace-period deadline.
51
+ data:,
52
+ # The timestamp of when the event occurred
53
+ timestamp:,
54
+ # The event type
55
+ type: :"subscription.past_due"
56
+ )
57
+ end
58
+
59
+ sig do
60
+ override.returns(
61
+ {
62
+ business_id: String,
63
+ data: Dodopayments::SubscriptionPastDueWebhookEvent::Data,
64
+ timestamp: Time,
65
+ type: Symbol
66
+ }
67
+ )
68
+ end
69
+ def to_hash
70
+ end
71
+
72
+ class Data < Dodopayments::Models::Subscription
73
+ OrHash =
74
+ T.type_alias do
75
+ T.any(
76
+ Dodopayments::SubscriptionPastDueWebhookEvent::Data,
77
+ Dodopayments::Internal::AnyHash
78
+ )
79
+ end
80
+
81
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
82
+ # `cancelled` at this time.
83
+ #
84
+ # Read in the same query as the rest of the payload, so it always comes from the
85
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
86
+ # a window at that moment. A delayed event of another type therefore carries the
87
+ # deadline too, next to a `past_due` status.
88
+ sig { returns(T.nilable(Time)) }
89
+ attr_accessor :past_due_ends_at
90
+
91
+ # Subscription payload sent on a webhook. It carries every field of
92
+ # `SubscriptionResponse`, plus the grace-period deadline.
93
+ sig do
94
+ params(past_due_ends_at: T.nilable(Time)).returns(T.attached_class)
95
+ end
96
+ def self.new(
97
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
98
+ # `cancelled` at this time.
99
+ #
100
+ # Read in the same query as the rest of the payload, so it always comes from the
101
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
102
+ # a window at that moment. A delayed event of another type therefore carries the
103
+ # deadline too, next to a `past_due` status.
104
+ past_due_ends_at: nil
105
+ )
106
+ end
107
+
108
+ sig { override.returns({ past_due_ends_at: T.nilable(Time) }) }
109
+ def to_hash
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -15,11 +15,16 @@ module Dodopayments
15
15
  sig { returns(String) }
16
16
  attr_accessor :business_id
17
17
 
18
- # Response struct representing subscription details
19
- sig { returns(Dodopayments::Subscription) }
18
+ # Subscription payload sent on a webhook. It carries every field of
19
+ # `SubscriptionResponse`, plus the grace-period deadline.
20
+ sig { returns(Dodopayments::SubscriptionPausedWebhookEvent::Data) }
20
21
  attr_reader :data
21
22
 
22
- sig { params(data: Dodopayments::Subscription::OrHash).void }
23
+ sig do
24
+ params(
25
+ data: Dodopayments::SubscriptionPausedWebhookEvent::Data::OrHash
26
+ ).void
27
+ end
23
28
  attr_writer :data
24
29
 
25
30
  # The timestamp of when the event occurred
@@ -33,7 +38,7 @@ module Dodopayments
33
38
  sig do
34
39
  params(
35
40
  business_id: String,
36
- data: Dodopayments::Subscription::OrHash,
41
+ data: Dodopayments::SubscriptionPausedWebhookEvent::Data::OrHash,
37
42
  timestamp: Time,
38
43
  type: Symbol
39
44
  ).returns(T.attached_class)
@@ -41,7 +46,8 @@ module Dodopayments
41
46
  def self.new(
42
47
  # The business identifier
43
48
  business_id:,
44
- # Response struct representing subscription details
49
+ # Subscription payload sent on a webhook. It carries every field of
50
+ # `SubscriptionResponse`, plus the grace-period deadline.
45
51
  data:,
46
52
  # The timestamp of when the event occurred
47
53
  timestamp:,
@@ -54,7 +60,7 @@ module Dodopayments
54
60
  override.returns(
55
61
  {
56
62
  business_id: String,
57
- data: Dodopayments::Subscription,
63
+ data: Dodopayments::SubscriptionPausedWebhookEvent::Data,
58
64
  timestamp: Time,
59
65
  type: Symbol
60
66
  }
@@ -62,6 +68,47 @@ module Dodopayments
62
68
  end
63
69
  def to_hash
64
70
  end
71
+
72
+ class Data < Dodopayments::Models::Subscription
73
+ OrHash =
74
+ T.type_alias do
75
+ T.any(
76
+ Dodopayments::SubscriptionPausedWebhookEvent::Data,
77
+ Dodopayments::Internal::AnyHash
78
+ )
79
+ end
80
+
81
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
82
+ # `cancelled` at this time.
83
+ #
84
+ # Read in the same query as the rest of the payload, so it always comes from the
85
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
86
+ # a window at that moment. A delayed event of another type therefore carries the
87
+ # deadline too, next to a `past_due` status.
88
+ sig { returns(T.nilable(Time)) }
89
+ attr_accessor :past_due_ends_at
90
+
91
+ # Subscription payload sent on a webhook. It carries every field of
92
+ # `SubscriptionResponse`, plus the grace-period deadline.
93
+ sig do
94
+ params(past_due_ends_at: T.nilable(Time)).returns(T.attached_class)
95
+ end
96
+ def self.new(
97
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
98
+ # `cancelled` at this time.
99
+ #
100
+ # Read in the same query as the rest of the payload, so it always comes from the
101
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
102
+ # a window at that moment. A delayed event of another type therefore carries the
103
+ # deadline too, next to a `past_due` status.
104
+ past_due_ends_at: nil
105
+ )
106
+ end
107
+
108
+ sig { override.returns({ past_due_ends_at: T.nilable(Time) }) }
109
+ def to_hash
110
+ end
111
+ end
65
112
  end
66
113
  end
67
114
  end
@@ -15,11 +15,16 @@ module Dodopayments
15
15
  sig { returns(String) }
16
16
  attr_accessor :business_id
17
17
 
18
- # Response struct representing subscription details
19
- sig { returns(Dodopayments::Subscription) }
18
+ # Subscription payload sent on a webhook. It carries every field of
19
+ # `SubscriptionResponse`, plus the grace-period deadline.
20
+ sig { returns(Dodopayments::SubscriptionPlanChangedWebhookEvent::Data) }
20
21
  attr_reader :data
21
22
 
22
- sig { params(data: Dodopayments::Subscription::OrHash).void }
23
+ sig do
24
+ params(
25
+ data: Dodopayments::SubscriptionPlanChangedWebhookEvent::Data::OrHash
26
+ ).void
27
+ end
23
28
  attr_writer :data
24
29
 
25
30
  # The timestamp of when the event occurred
@@ -33,7 +38,7 @@ module Dodopayments
33
38
  sig do
34
39
  params(
35
40
  business_id: String,
36
- data: Dodopayments::Subscription::OrHash,
41
+ data: Dodopayments::SubscriptionPlanChangedWebhookEvent::Data::OrHash,
37
42
  timestamp: Time,
38
43
  type: Symbol
39
44
  ).returns(T.attached_class)
@@ -41,7 +46,8 @@ module Dodopayments
41
46
  def self.new(
42
47
  # The business identifier
43
48
  business_id:,
44
- # Response struct representing subscription details
49
+ # Subscription payload sent on a webhook. It carries every field of
50
+ # `SubscriptionResponse`, plus the grace-period deadline.
45
51
  data:,
46
52
  # The timestamp of when the event occurred
47
53
  timestamp:,
@@ -54,7 +60,7 @@ module Dodopayments
54
60
  override.returns(
55
61
  {
56
62
  business_id: String,
57
- data: Dodopayments::Subscription,
63
+ data: Dodopayments::SubscriptionPlanChangedWebhookEvent::Data,
58
64
  timestamp: Time,
59
65
  type: Symbol
60
66
  }
@@ -62,6 +68,47 @@ module Dodopayments
62
68
  end
63
69
  def to_hash
64
70
  end
71
+
72
+ class Data < Dodopayments::Models::Subscription
73
+ OrHash =
74
+ T.type_alias do
75
+ T.any(
76
+ Dodopayments::SubscriptionPlanChangedWebhookEvent::Data,
77
+ Dodopayments::Internal::AnyHash
78
+ )
79
+ end
80
+
81
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
82
+ # `cancelled` at this time.
83
+ #
84
+ # Read in the same query as the rest of the payload, so it always comes from the
85
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
86
+ # a window at that moment. A delayed event of another type therefore carries the
87
+ # deadline too, next to a `past_due` status.
88
+ sig { returns(T.nilable(Time)) }
89
+ attr_accessor :past_due_ends_at
90
+
91
+ # Subscription payload sent on a webhook. It carries every field of
92
+ # `SubscriptionResponse`, plus the grace-period deadline.
93
+ sig do
94
+ params(past_due_ends_at: T.nilable(Time)).returns(T.attached_class)
95
+ end
96
+ def self.new(
97
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
98
+ # `cancelled` at this time.
99
+ #
100
+ # Read in the same query as the rest of the payload, so it always comes from the
101
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
102
+ # a window at that moment. A delayed event of another type therefore carries the
103
+ # deadline too, next to a `past_due` status.
104
+ past_due_ends_at: nil
105
+ )
106
+ end
107
+
108
+ sig { override.returns({ past_due_ends_at: T.nilable(Time) }) }
109
+ def to_hash
110
+ end
111
+ end
65
112
  end
66
113
  end
67
114
  end
@@ -15,11 +15,16 @@ module Dodopayments
15
15
  sig { returns(String) }
16
16
  attr_accessor :business_id
17
17
 
18
- # Response struct representing subscription details
19
- sig { returns(Dodopayments::Subscription) }
18
+ # Subscription payload sent on a webhook. It carries every field of
19
+ # `SubscriptionResponse`, plus the grace-period deadline.
20
+ sig { returns(Dodopayments::SubscriptionRenewedWebhookEvent::Data) }
20
21
  attr_reader :data
21
22
 
22
- sig { params(data: Dodopayments::Subscription::OrHash).void }
23
+ sig do
24
+ params(
25
+ data: Dodopayments::SubscriptionRenewedWebhookEvent::Data::OrHash
26
+ ).void
27
+ end
23
28
  attr_writer :data
24
29
 
25
30
  # The timestamp of when the event occurred
@@ -33,7 +38,7 @@ module Dodopayments
33
38
  sig do
34
39
  params(
35
40
  business_id: String,
36
- data: Dodopayments::Subscription::OrHash,
41
+ data: Dodopayments::SubscriptionRenewedWebhookEvent::Data::OrHash,
37
42
  timestamp: Time,
38
43
  type: Symbol
39
44
  ).returns(T.attached_class)
@@ -41,7 +46,8 @@ module Dodopayments
41
46
  def self.new(
42
47
  # The business identifier
43
48
  business_id:,
44
- # Response struct representing subscription details
49
+ # Subscription payload sent on a webhook. It carries every field of
50
+ # `SubscriptionResponse`, plus the grace-period deadline.
45
51
  data:,
46
52
  # The timestamp of when the event occurred
47
53
  timestamp:,
@@ -54,7 +60,7 @@ module Dodopayments
54
60
  override.returns(
55
61
  {
56
62
  business_id: String,
57
- data: Dodopayments::Subscription,
63
+ data: Dodopayments::SubscriptionRenewedWebhookEvent::Data,
58
64
  timestamp: Time,
59
65
  type: Symbol
60
66
  }
@@ -62,6 +68,47 @@ module Dodopayments
62
68
  end
63
69
  def to_hash
64
70
  end
71
+
72
+ class Data < Dodopayments::Models::Subscription
73
+ OrHash =
74
+ T.type_alias do
75
+ T.any(
76
+ Dodopayments::SubscriptionRenewedWebhookEvent::Data,
77
+ Dodopayments::Internal::AnyHash
78
+ )
79
+ end
80
+
81
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
82
+ # `cancelled` at this time.
83
+ #
84
+ # Read in the same query as the rest of the payload, so it always comes from the
85
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
86
+ # a window at that moment. A delayed event of another type therefore carries the
87
+ # deadline too, next to a `past_due` status.
88
+ sig { returns(T.nilable(Time)) }
89
+ attr_accessor :past_due_ends_at
90
+
91
+ # Subscription payload sent on a webhook. It carries every field of
92
+ # `SubscriptionResponse`, plus the grace-period deadline.
93
+ sig do
94
+ params(past_due_ends_at: T.nilable(Time)).returns(T.attached_class)
95
+ end
96
+ def self.new(
97
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
98
+ # `cancelled` at this time.
99
+ #
100
+ # Read in the same query as the rest of the payload, so it always comes from the
101
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
102
+ # a window at that moment. A delayed event of another type therefore carries the
103
+ # deadline too, next to a `past_due` status.
104
+ past_due_ends_at: nil
105
+ )
106
+ end
107
+
108
+ sig { override.returns({ past_due_ends_at: T.nilable(Time) }) }
109
+ def to_hash
110
+ end
111
+ end
65
112
  end
66
113
  end
67
114
  end
@@ -17,6 +17,8 @@ module Dodopayments
17
17
  T.let(:cancelled, Dodopayments::SubscriptionStatus::TaggedSymbol)
18
18
  FAILED = T.let(:failed, Dodopayments::SubscriptionStatus::TaggedSymbol)
19
19
  EXPIRED = T.let(:expired, Dodopayments::SubscriptionStatus::TaggedSymbol)
20
+ PAST_DUE =
21
+ T.let(:past_due, Dodopayments::SubscriptionStatus::TaggedSymbol)
20
22
 
21
23
  sig do
22
24
  override.returns(