dodopayments 2.26.0 → 2.27.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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/client.rb +4 -0
  5. data/lib/dodopayments/models/balance_ledger_entry.rb +7 -1
  6. data/lib/dodopayments/models/blocklist/block_by_customer_id.rb +18 -0
  7. data/lib/dodopayments/models/blocklist/block_by_email.rb +18 -0
  8. data/lib/dodopayments/models/blocklist/block_identifier.rb +21 -0
  9. data/lib/dodopayments/models/blocklist/blocked_customer.rb +128 -0
  10. data/lib/dodopayments/models/blocklist/blocked_customer_source.rb +22 -0
  11. data/lib/dodopayments/models/blocklist/create_blocked_customer_request.rb +66 -0
  12. data/lib/dodopayments/models/blocklist/customer_create_params.rb +16 -0
  13. data/lib/dodopayments/models/blocklist/customer_delete_params.rb +22 -0
  14. data/lib/dodopayments/models/blocklist/customer_list_params.rb +64 -0
  15. data/lib/dodopayments/models/blocklist/customer_retrieve_params.rb +22 -0
  16. data/lib/dodopayments/models/blocklist/customers/blocked_customer_note.rb +44 -0
  17. data/lib/dodopayments/models/blocklist/customers/note_create_params.rb +24 -0
  18. data/lib/dodopayments/models/blocklist/customers/note_request.rb +19 -0
  19. data/lib/dodopayments/models/blocklist/customers/note_update_params.rb +30 -0
  20. data/lib/dodopayments/models/customer.rb +22 -1
  21. data/lib/dodopayments/models/dunning_recovered_webhook_event.rb +1 -0
  22. data/lib/dodopayments/models/dunning_started_webhook_event.rb +1 -0
  23. data/lib/dodopayments/models/manual_retry.rb +76 -0
  24. data/lib/dodopayments/models/manual_retry_state.rb +50 -0
  25. data/lib/dodopayments/models/payment_retrieve_retry_state_params.rb +20 -0
  26. data/lib/dodopayments/models/payment_retry_params.rb +20 -0
  27. data/lib/dodopayments/models/subscription_active_webhook_event.rb +32 -4
  28. data/lib/dodopayments/models/subscription_cancelled_webhook_event.rb +33 -4
  29. data/lib/dodopayments/models/subscription_expired_webhook_event.rb +32 -4
  30. data/lib/dodopayments/models/subscription_failed_webhook_event.rb +32 -4
  31. data/lib/dodopayments/models/subscription_list_params.rb +1 -0
  32. data/lib/dodopayments/models/subscription_on_hold_webhook_event.rb +32 -4
  33. data/lib/dodopayments/models/subscription_past_due_webhook_event.rb +68 -0
  34. data/lib/dodopayments/models/subscription_paused_webhook_event.rb +32 -4
  35. data/lib/dodopayments/models/subscription_plan_changed_webhook_event.rb +33 -4
  36. data/lib/dodopayments/models/subscription_renewed_webhook_event.rb +32 -4
  37. data/lib/dodopayments/models/subscription_status.rb +1 -0
  38. data/lib/dodopayments/models/subscription_unpaused_webhook_event.rb +32 -4
  39. data/lib/dodopayments/models/subscription_update_params.rb +1 -0
  40. data/lib/dodopayments/models/subscription_update_payment_method_webhook_event.rb +34 -4
  41. data/lib/dodopayments/models/subscription_updated_webhook_event.rb +32 -4
  42. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +3 -1
  43. data/lib/dodopayments/models/unwrap_webhook_event.rb +3 -1
  44. data/lib/dodopayments/models/webhook_event_type.rb +1 -0
  45. data/lib/dodopayments/models/webhook_payload.rb +19 -1
  46. data/lib/dodopayments/models.rb +12 -0
  47. data/lib/dodopayments/resources/blocklist/customers/notes.rb +68 -0
  48. data/lib/dodopayments/resources/blocklist/customers.rb +107 -0
  49. data/lib/dodopayments/resources/blocklist.rb +18 -0
  50. data/lib/dodopayments/resources/payments.rb +36 -0
  51. data/lib/dodopayments/resources/webhooks.rb +2 -2
  52. data/lib/dodopayments/version.rb +1 -1
  53. data/lib/dodopayments.rb +23 -1
  54. data/rbi/dodopayments/client.rbi +3 -0
  55. data/rbi/dodopayments/models/balance_ledger_entry.rbi +6 -0
  56. data/rbi/dodopayments/models/blocklist/block_by_customer_id.rbi +32 -0
  57. data/rbi/dodopayments/models/blocklist/block_by_email.rbi +32 -0
  58. data/rbi/dodopayments/models/blocklist/block_identifier.rbi +30 -0
  59. data/rbi/dodopayments/models/blocklist/blocked_customer.rbi +161 -0
  60. data/rbi/dodopayments/models/blocklist/blocked_customer_source.rbi +55 -0
  61. data/rbi/dodopayments/models/blocklist/create_blocked_customer_request.rbi +143 -0
  62. data/rbi/dodopayments/models/blocklist/customer_create_params.rbi +34 -0
  63. data/rbi/dodopayments/models/blocklist/customer_delete_params.rbi +40 -0
  64. data/rbi/dodopayments/models/blocklist/customer_list_params.rbi +88 -0
  65. data/rbi/dodopayments/models/blocklist/customer_retrieve_params.rbi +40 -0
  66. data/rbi/dodopayments/models/blocklist/customers/blocked_customer_note.rbi +66 -0
  67. data/rbi/dodopayments/models/blocklist/customers/note_create_params.rbi +45 -0
  68. data/rbi/dodopayments/models/blocklist/customers/note_request.rbi +30 -0
  69. data/rbi/dodopayments/models/blocklist/customers/note_update_params.rbi +50 -0
  70. data/rbi/dodopayments/models/customer.rbi +20 -0
  71. data/rbi/dodopayments/models/dunning_recovered_webhook_event.rbi +5 -0
  72. data/rbi/dodopayments/models/dunning_started_webhook_event.rbi +5 -0
  73. data/rbi/dodopayments/models/manual_retry.rbi +93 -0
  74. data/rbi/dodopayments/models/manual_retry_state.rbi +65 -0
  75. data/rbi/dodopayments/models/payment_retrieve_retry_state_params.rbi +38 -0
  76. data/rbi/dodopayments/models/payment_retry_params.rbi +38 -0
  77. data/rbi/dodopayments/models/subscription_active_webhook_event.rbi +53 -6
  78. data/rbi/dodopayments/models/subscription_cancelled_webhook_event.rbi +53 -6
  79. data/rbi/dodopayments/models/subscription_expired_webhook_event.rbi +53 -6
  80. data/rbi/dodopayments/models/subscription_failed_webhook_event.rbi +53 -6
  81. data/rbi/dodopayments/models/subscription_list_params.rbi +5 -0
  82. data/rbi/dodopayments/models/subscription_on_hold_webhook_event.rbi +53 -6
  83. data/rbi/dodopayments/models/subscription_past_due_webhook_event.rbi +114 -0
  84. data/rbi/dodopayments/models/subscription_paused_webhook_event.rbi +53 -6
  85. data/rbi/dodopayments/models/subscription_plan_changed_webhook_event.rbi +53 -6
  86. data/rbi/dodopayments/models/subscription_renewed_webhook_event.rbi +53 -6
  87. data/rbi/dodopayments/models/subscription_status.rbi +2 -0
  88. data/rbi/dodopayments/models/subscription_unpaused_webhook_event.rbi +53 -6
  89. data/rbi/dodopayments/models/subscription_update_params.rbi +5 -0
  90. data/rbi/dodopayments/models/subscription_update_payment_method_webhook_event.rbi +58 -6
  91. data/rbi/dodopayments/models/subscription_updated_webhook_event.rbi +53 -6
  92. data/rbi/dodopayments/models/unsafe_unwrap_webhook_event.rbi +1 -0
  93. data/rbi/dodopayments/models/unwrap_webhook_event.rbi +1 -0
  94. data/rbi/dodopayments/models/webhook_event_type.rbi +5 -0
  95. data/rbi/dodopayments/models/webhook_payload.rbi +37 -3
  96. data/rbi/dodopayments/models.rbi +14 -0
  97. data/rbi/dodopayments/resources/blocklist/customers/notes.rbi +50 -0
  98. data/rbi/dodopayments/resources/blocklist/customers.rbi +88 -0
  99. data/rbi/dodopayments/resources/blocklist.rbi +15 -0
  100. data/rbi/dodopayments/resources/payments.rbi +26 -0
  101. data/rbi/dodopayments/resources/webhooks.rbi +2 -0
  102. data/sig/dodopayments/client.rbs +2 -0
  103. data/sig/dodopayments/models/balance_ledger_entry.rbs +5 -0
  104. data/sig/dodopayments/models/blocklist/block_by_customer_id.rbs +15 -0
  105. data/sig/dodopayments/models/blocklist/block_by_email.rbs +15 -0
  106. data/sig/dodopayments/models/blocklist/block_identifier.rbs +15 -0
  107. data/sig/dodopayments/models/blocklist/blocked_customer.rbs +87 -0
  108. data/sig/dodopayments/models/blocklist/blocked_customer_source.rbs +20 -0
  109. data/sig/dodopayments/models/blocklist/create_blocked_customer_request.rbs +71 -0
  110. data/sig/dodopayments/models/blocklist/customer_create_params.rbs +17 -0
  111. data/sig/dodopayments/models/blocklist/customer_delete_params.rbs +25 -0
  112. data/sig/dodopayments/models/blocklist/customer_list_params.rbs +53 -0
  113. data/sig/dodopayments/models/blocklist/customer_retrieve_params.rbs +25 -0
  114. data/sig/dodopayments/models/blocklist/customers/blocked_customer_note.rbs +44 -0
  115. data/sig/dodopayments/models/blocklist/customers/note_create_params.rbs +30 -0
  116. data/sig/dodopayments/models/blocklist/customers/note_request.rbs +17 -0
  117. data/sig/dodopayments/models/blocklist/customers/note_update_params.rbs +36 -0
  118. data/sig/dodopayments/models/customer.rbs +10 -0
  119. data/sig/dodopayments/models/dunning_recovered_webhook_event.rbs +2 -1
  120. data/sig/dodopayments/models/dunning_started_webhook_event.rbs +2 -1
  121. data/sig/dodopayments/models/manual_retry.rbs +55 -0
  122. data/sig/dodopayments/models/manual_retry_state.rbs +40 -0
  123. data/sig/dodopayments/models/payment_retrieve_retry_state_params.rbs +23 -0
  124. data/sig/dodopayments/models/payment_retry_params.rbs +23 -0
  125. data/sig/dodopayments/models/subscription_active_webhook_event.rbs +16 -4
  126. data/sig/dodopayments/models/subscription_cancelled_webhook_event.rbs +16 -4
  127. data/sig/dodopayments/models/subscription_expired_webhook_event.rbs +16 -4
  128. data/sig/dodopayments/models/subscription_failed_webhook_event.rbs +16 -4
  129. data/sig/dodopayments/models/subscription_list_params.rbs +2 -0
  130. data/sig/dodopayments/models/subscription_on_hold_webhook_event.rbs +16 -4
  131. data/sig/dodopayments/models/subscription_past_due_webhook_event.rbs +47 -0
  132. data/sig/dodopayments/models/subscription_paused_webhook_event.rbs +16 -4
  133. data/sig/dodopayments/models/subscription_plan_changed_webhook_event.rbs +16 -4
  134. data/sig/dodopayments/models/subscription_renewed_webhook_event.rbs +16 -4
  135. data/sig/dodopayments/models/subscription_status.rbs +9 -1
  136. data/sig/dodopayments/models/subscription_unpaused_webhook_event.rbs +16 -4
  137. data/sig/dodopayments/models/subscription_update_params.rbs +2 -0
  138. data/sig/dodopayments/models/subscription_update_payment_method_webhook_event.rbs +16 -4
  139. data/sig/dodopayments/models/subscription_updated_webhook_event.rbs +16 -4
  140. data/sig/dodopayments/models/unsafe_unwrap_webhook_event.rbs +1 -0
  141. data/sig/dodopayments/models/unwrap_webhook_event.rbs +1 -0
  142. data/sig/dodopayments/models/webhook_event_type.rbs +2 -0
  143. data/sig/dodopayments/models/webhook_payload.rbs +16 -4
  144. data/sig/dodopayments/models.rbs +12 -0
  145. data/sig/dodopayments/resources/blocklist/customers/notes.rbs +24 -0
  146. data/sig/dodopayments/resources/blocklist/customers.rbs +36 -0
  147. data/sig/dodopayments/resources/blocklist.rbs +9 -0
  148. data/sig/dodopayments/resources/payments.rbs +10 -0
  149. data/sig/dodopayments/resources/webhooks.rbs +2 -0
  150. metadata +68 -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::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(
@@ -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::SubscriptionUnpausedWebhookEvent::Data) }
20
21
  attr_reader :data
21
22
 
22
- sig { params(data: Dodopayments::Subscription::OrHash).void }
23
+ sig do
24
+ params(
25
+ data: Dodopayments::SubscriptionUnpausedWebhookEvent::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::SubscriptionUnpausedWebhookEvent::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::SubscriptionUnpausedWebhookEvent::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::SubscriptionUnpausedWebhookEvent::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
@@ -289,6 +289,11 @@ module Dodopayments
289
289
  :cancelled_by_merchant_send_dunning,
290
290
  Dodopayments::SubscriptionUpdateParams::CancelReason::TaggedSymbol
291
291
  )
292
+ CANCELLED_BY_MERCHANT_GRACE_PERIOD_EXPIRED =
293
+ T.let(
294
+ :cancelled_by_merchant_grace_period_expired,
295
+ Dodopayments::SubscriptionUpdateParams::CancelReason::TaggedSymbol
296
+ )
292
297
  DODO_TEAM =
293
298
  T.let(
294
299
  :dodo_team,
@@ -15,11 +15,19 @@ 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 do
21
+ returns(Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent::Data)
22
+ end
20
23
  attr_reader :data
21
24
 
22
- sig { params(data: Dodopayments::Subscription::OrHash).void }
25
+ sig do
26
+ params(
27
+ data:
28
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent::Data::OrHash
29
+ ).void
30
+ end
23
31
  attr_writer :data
24
32
 
25
33
  # The timestamp of when the event occurred
@@ -33,7 +41,8 @@ module Dodopayments
33
41
  sig do
34
42
  params(
35
43
  business_id: String,
36
- data: Dodopayments::Subscription::OrHash,
44
+ data:
45
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent::Data::OrHash,
37
46
  timestamp: Time,
38
47
  type: Symbol
39
48
  ).returns(T.attached_class)
@@ -41,7 +50,8 @@ module Dodopayments
41
50
  def self.new(
42
51
  # The business identifier
43
52
  business_id:,
44
- # Response struct representing subscription details
53
+ # Subscription payload sent on a webhook. It carries every field of
54
+ # `SubscriptionResponse`, plus the grace-period deadline.
45
55
  data:,
46
56
  # The timestamp of when the event occurred
47
57
  timestamp:,
@@ -54,7 +64,8 @@ module Dodopayments
54
64
  override.returns(
55
65
  {
56
66
  business_id: String,
57
- data: Dodopayments::Subscription,
67
+ data:
68
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent::Data,
58
69
  timestamp: Time,
59
70
  type: Symbol
60
71
  }
@@ -62,6 +73,47 @@ module Dodopayments
62
73
  end
63
74
  def to_hash
64
75
  end
76
+
77
+ class Data < Dodopayments::Models::Subscription
78
+ OrHash =
79
+ T.type_alias do
80
+ T.any(
81
+ Dodopayments::SubscriptionUpdatePaymentMethodWebhookEvent::Data,
82
+ Dodopayments::Internal::AnyHash
83
+ )
84
+ end
85
+
86
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
87
+ # `cancelled` at this time.
88
+ #
89
+ # Read in the same query as the rest of the payload, so it always comes from the
90
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
91
+ # a window at that moment. A delayed event of another type therefore carries the
92
+ # deadline too, next to a `past_due` status.
93
+ sig { returns(T.nilable(Time)) }
94
+ attr_accessor :past_due_ends_at
95
+
96
+ # Subscription payload sent on a webhook. It carries every field of
97
+ # `SubscriptionResponse`, plus the grace-period deadline.
98
+ sig do
99
+ params(past_due_ends_at: T.nilable(Time)).returns(T.attached_class)
100
+ end
101
+ def self.new(
102
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
103
+ # `cancelled` at this time.
104
+ #
105
+ # Read in the same query as the rest of the payload, so it always comes from the
106
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
107
+ # a window at that moment. A delayed event of another type therefore carries the
108
+ # deadline too, next to a `past_due` status.
109
+ past_due_ends_at: nil
110
+ )
111
+ end
112
+
113
+ sig { override.returns({ past_due_ends_at: T.nilable(Time) }) }
114
+ def to_hash
115
+ end
116
+ end
65
117
  end
66
118
  end
67
119
  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::SubscriptionUpdatedWebhookEvent::Data) }
20
21
  attr_reader :data
21
22
 
22
- sig { params(data: Dodopayments::Subscription::OrHash).void }
23
+ sig do
24
+ params(
25
+ data: Dodopayments::SubscriptionUpdatedWebhookEvent::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::SubscriptionUpdatedWebhookEvent::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::SubscriptionUpdatedWebhookEvent::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::SubscriptionUpdatedWebhookEvent::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
@@ -49,6 +49,7 @@ module Dodopayments
49
49
  Dodopayments::SubscriptionExpiredWebhookEvent,
50
50
  Dodopayments::SubscriptionFailedWebhookEvent,
51
51
  Dodopayments::SubscriptionOnHoldWebhookEvent,
52
+ Dodopayments::SubscriptionPastDueWebhookEvent,
52
53
  Dodopayments::SubscriptionPausedWebhookEvent,
53
54
  Dodopayments::SubscriptionPlanChangedWebhookEvent,
54
55
  Dodopayments::SubscriptionRenewedWebhookEvent,
@@ -49,6 +49,7 @@ module Dodopayments
49
49
  Dodopayments::SubscriptionExpiredWebhookEvent,
50
50
  Dodopayments::SubscriptionFailedWebhookEvent,
51
51
  Dodopayments::SubscriptionOnHoldWebhookEvent,
52
+ Dodopayments::SubscriptionPastDueWebhookEvent,
52
53
  Dodopayments::SubscriptionPausedWebhookEvent,
53
54
  Dodopayments::SubscriptionPlanChangedWebhookEvent,
54
55
  Dodopayments::SubscriptionRenewedWebhookEvent,
@@ -66,6 +66,11 @@ module Dodopayments
66
66
  :"subscription.on_hold",
67
67
  Dodopayments::WebhookEventType::TaggedSymbol
68
68
  )
69
+ SUBSCRIPTION_PAST_DUE =
70
+ T.let(
71
+ :"subscription.past_due",
72
+ Dodopayments::WebhookEventType::TaggedSymbol
73
+ )
69
74
  SUBSCRIPTION_PAUSED =
70
75
  T.let(
71
76
  :"subscription.paused",
@@ -153,12 +153,41 @@ module Dodopayments
153
153
  sig { returns(Symbol) }
154
154
  attr_accessor :payload_type
155
155
 
156
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
157
+ # `cancelled` at this time.
158
+ #
159
+ # Read in the same query as the rest of the payload, so it always comes from the
160
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
161
+ # a window at that moment. A delayed event of another type therefore carries the
162
+ # deadline too, next to a `past_due` status.
163
+ sig { returns(T.nilable(Time)) }
164
+ attr_accessor :past_due_ends_at
165
+
156
166
  # Response struct representing subscription details
157
- sig { params(payload_type: Symbol).returns(T.attached_class) }
158
- def self.new(payload_type: :Subscription)
167
+ sig do
168
+ params(
169
+ past_due_ends_at: T.nilable(Time),
170
+ payload_type: Symbol
171
+ ).returns(T.attached_class)
172
+ end
173
+ def self.new(
174
+ # Time when the grace period ends. The subscription moves to `on_hold` or to
175
+ # `cancelled` at this time.
176
+ #
177
+ # Read in the same query as the rest of the payload, so it always comes from the
178
+ # row snapshot that produced `status`. It is set whenever the subscription sits in
179
+ # a window at that moment. A delayed event of another type therefore carries the
180
+ # deadline too, next to a `past_due` status.
181
+ past_due_ends_at: nil,
182
+ payload_type: :Subscription
183
+ )
159
184
  end
160
185
 
161
- sig { override.returns({ payload_type: Symbol }) }
186
+ sig do
187
+ override.returns(
188
+ { payload_type: Symbol, past_due_ends_at: T.nilable(Time) }
189
+ )
190
+ end
162
191
  def to_hash
163
192
  end
164
193
  end
@@ -867,6 +896,11 @@ module Dodopayments
867
896
  :cancelled,
868
897
  Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState::TaggedSymbol
869
898
  )
899
+ PAST_DUE =
900
+ T.let(
901
+ :past_due,
902
+ Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState::TaggedSymbol
903
+ )
870
904
 
871
905
  sig do
872
906
  override.returns(