dodopayments 2.4.1 → 2.6.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 (87) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/internal/util.rb +18 -4
  5. data/lib/dodopayments/models/abandoned_checkout_detected_webhook_event.rb +126 -0
  6. data/lib/dodopayments/models/abandoned_checkout_recovered_webhook_event.rb +126 -0
  7. data/lib/dodopayments/models/balance_ledger_entry.rb +2 -0
  8. data/lib/dodopayments/models/balance_retrieve_ledger_params.rb +2 -0
  9. data/lib/dodopayments/models/discount.rb +8 -1
  10. data/lib/dodopayments/models/discount_create_params.rb +9 -1
  11. data/lib/dodopayments/models/discount_update_params.rb +9 -1
  12. data/lib/dodopayments/models/dunning_recovered_webhook_event.rb +118 -0
  13. data/lib/dodopayments/models/dunning_started_webhook_event.rb +118 -0
  14. data/lib/dodopayments/models/payouts/breakup/detail_download_csv_params.rb +24 -0
  15. data/lib/dodopayments/models/payouts/breakup/detail_list_params.rb +41 -0
  16. data/lib/dodopayments/models/payouts/breakup/detail_list_response.rb +94 -0
  17. data/lib/dodopayments/models/payouts/breakup_retrieve_params.rb +22 -0
  18. data/lib/dodopayments/models/payouts/breakup_retrieve_response.rb +37 -0
  19. data/lib/dodopayments/models/subscription_update_params.rb +19 -1
  20. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +9 -1
  21. data/lib/dodopayments/models/unwrap_webhook_event.rb +9 -1
  22. data/lib/dodopayments/models/webhook_event_type.rb +6 -0
  23. data/lib/dodopayments/models/webhook_payload.rb +168 -3
  24. data/lib/dodopayments/models.rb +10 -0
  25. data/lib/dodopayments/resources/discounts.rb +6 -2
  26. data/lib/dodopayments/resources/payouts/breakup/details.rb +72 -0
  27. data/lib/dodopayments/resources/payouts/breakup.rb +43 -0
  28. data/lib/dodopayments/resources/payouts.rb +4 -0
  29. data/lib/dodopayments/resources/subscriptions.rb +3 -1
  30. data/lib/dodopayments/resources/webhooks.rb +2 -2
  31. data/lib/dodopayments/version.rb +1 -1
  32. data/lib/dodopayments.rb +11 -0
  33. data/rbi/dodopayments/internal/util.rbi +8 -0
  34. data/rbi/dodopayments/models/abandoned_checkout_detected_webhook_event.rbi +271 -0
  35. data/rbi/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbi +273 -0
  36. data/rbi/dodopayments/models/balance_ledger_entry.rbi +10 -0
  37. data/rbi/dodopayments/models/balance_retrieve_ledger_params.rbi +10 -0
  38. data/rbi/dodopayments/models/discount.rbi +6 -0
  39. data/rbi/dodopayments/models/discount_create_params.rbi +11 -0
  40. data/rbi/dodopayments/models/discount_update_params.rbi +8 -0
  41. data/rbi/dodopayments/models/dunning_recovered_webhook_event.rbi +249 -0
  42. data/rbi/dodopayments/models/dunning_started_webhook_event.rbi +249 -0
  43. data/rbi/dodopayments/models/payouts/breakup/detail_download_csv_params.rbi +45 -0
  44. data/rbi/dodopayments/models/payouts/breakup/detail_list_params.rbi +70 -0
  45. data/rbi/dodopayments/models/payouts/breakup/detail_list_response.rbi +116 -0
  46. data/rbi/dodopayments/models/payouts/breakup_retrieve_params.rbi +40 -0
  47. data/rbi/dodopayments/models/payouts/breakup_retrieve_response.rbi +53 -0
  48. data/rbi/dodopayments/models/subscription_update_params.rbi +54 -0
  49. data/rbi/dodopayments/models/unsafe_unwrap_webhook_event.rbi +4 -0
  50. data/rbi/dodopayments/models/unwrap_webhook_event.rbi +4 -0
  51. data/rbi/dodopayments/models/webhook_event_type.rbi +21 -0
  52. data/rbi/dodopayments/models/webhook_payload.rbi +400 -4
  53. data/rbi/dodopayments/models.rbi +13 -0
  54. data/rbi/dodopayments/resources/discounts.rbi +6 -0
  55. data/rbi/dodopayments/resources/payouts/breakup/details.rbi +60 -0
  56. data/rbi/dodopayments/resources/payouts/breakup.rbi +36 -0
  57. data/rbi/dodopayments/resources/payouts.rbi +3 -0
  58. data/rbi/dodopayments/resources/subscriptions.rbi +5 -0
  59. data/rbi/dodopayments/resources/webhooks.rbi +8 -0
  60. data/sig/dodopayments/internal/util.rbs +4 -0
  61. data/sig/dodopayments/models/abandoned_checkout_detected_webhook_event.rbs +113 -0
  62. data/sig/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbs +113 -0
  63. data/sig/dodopayments/models/balance_ledger_entry.rbs +4 -0
  64. data/sig/dodopayments/models/balance_retrieve_ledger_params.rbs +4 -0
  65. data/sig/dodopayments/models/discount.rbs +5 -0
  66. data/sig/dodopayments/models/discount_create_params.rbs +7 -0
  67. data/sig/dodopayments/models/discount_update_params.rbs +5 -0
  68. data/sig/dodopayments/models/dunning_recovered_webhook_event.rbs +110 -0
  69. data/sig/dodopayments/models/dunning_started_webhook_event.rbs +110 -0
  70. data/sig/dodopayments/models/payouts/breakup/detail_download_csv_params.rbs +28 -0
  71. data/sig/dodopayments/models/payouts/breakup/detail_list_params.rbs +40 -0
  72. data/sig/dodopayments/models/payouts/breakup/detail_list_response.rbs +64 -0
  73. data/sig/dodopayments/models/payouts/breakup_retrieve_params.rbs +25 -0
  74. data/sig/dodopayments/models/payouts/breakup_retrieve_response.rbs +23 -0
  75. data/sig/dodopayments/models/subscription_update_params.rbs +20 -0
  76. data/sig/dodopayments/models/unsafe_unwrap_webhook_event.rbs +5 -1
  77. data/sig/dodopayments/models/unwrap_webhook_event.rbs +5 -1
  78. data/sig/dodopayments/models/webhook_event_type.rbs +12 -0
  79. data/sig/dodopayments/models/webhook_payload.rbs +165 -0
  80. data/sig/dodopayments/models.rbs +10 -0
  81. data/sig/dodopayments/resources/discounts.rbs +2 -0
  82. data/sig/dodopayments/resources/payouts/breakup/details.rbs +23 -0
  83. data/sig/dodopayments/resources/payouts/breakup.rbs +16 -0
  84. data/sig/dodopayments/resources/payouts.rbs +2 -0
  85. data/sig/dodopayments/resources/subscriptions.rbs +1 -0
  86. data/sig/dodopayments/resources/webhooks.rbs +10 -2
  87. metadata +35 -2
@@ -0,0 +1,273 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class AbandonedCheckoutRecoveredWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The business identifier
15
+ sig { returns(String) }
16
+ attr_accessor :business_id
17
+
18
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
19
+ # events
20
+ sig do
21
+ returns(Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data)
22
+ end
23
+ attr_reader :data
24
+
25
+ sig do
26
+ params(
27
+ data:
28
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::OrHash
29
+ ).void
30
+ end
31
+ attr_writer :data
32
+
33
+ # The timestamp of when the event occurred
34
+ sig { returns(Time) }
35
+ attr_accessor :timestamp
36
+
37
+ # The event type
38
+ sig do
39
+ returns(
40
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Type::TaggedSymbol
41
+ )
42
+ end
43
+ attr_accessor :type
44
+
45
+ sig do
46
+ params(
47
+ business_id: String,
48
+ data:
49
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::OrHash,
50
+ timestamp: Time,
51
+ type:
52
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Type::OrSymbol
53
+ ).returns(T.attached_class)
54
+ end
55
+ def self.new(
56
+ # The business identifier
57
+ business_id:,
58
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
59
+ # events
60
+ data:,
61
+ # The timestamp of when the event occurred
62
+ timestamp:,
63
+ # The event type
64
+ type:
65
+ )
66
+ end
67
+
68
+ sig do
69
+ override.returns(
70
+ {
71
+ business_id: String,
72
+ data: Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data,
73
+ timestamp: Time,
74
+ type:
75
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Type::TaggedSymbol
76
+ }
77
+ )
78
+ end
79
+ def to_hash
80
+ end
81
+
82
+ class Data < Dodopayments::Internal::Type::BaseModel
83
+ OrHash =
84
+ T.type_alias do
85
+ T.any(
86
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data,
87
+ Dodopayments::Internal::AnyHash
88
+ )
89
+ end
90
+
91
+ sig { returns(Time) }
92
+ attr_accessor :abandoned_at
93
+
94
+ sig do
95
+ returns(
96
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason::TaggedSymbol
97
+ )
98
+ end
99
+ attr_accessor :abandonment_reason
100
+
101
+ sig { returns(String) }
102
+ attr_accessor :customer_id
103
+
104
+ sig { returns(String) }
105
+ attr_accessor :payment_id
106
+
107
+ sig do
108
+ returns(
109
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::TaggedSymbol
110
+ )
111
+ end
112
+ attr_accessor :status
113
+
114
+ sig { returns(T.nilable(String)) }
115
+ attr_accessor :recovered_payment_id
116
+
117
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
118
+ # events
119
+ sig do
120
+ params(
121
+ abandoned_at: Time,
122
+ abandonment_reason:
123
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason::OrSymbol,
124
+ customer_id: String,
125
+ payment_id: String,
126
+ status:
127
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::OrSymbol,
128
+ recovered_payment_id: T.nilable(String)
129
+ ).returns(T.attached_class)
130
+ end
131
+ def self.new(
132
+ abandoned_at:,
133
+ abandonment_reason:,
134
+ customer_id:,
135
+ payment_id:,
136
+ status:,
137
+ recovered_payment_id: nil
138
+ )
139
+ end
140
+
141
+ sig do
142
+ override.returns(
143
+ {
144
+ abandoned_at: Time,
145
+ abandonment_reason:
146
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason::TaggedSymbol,
147
+ customer_id: String,
148
+ payment_id: String,
149
+ status:
150
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::TaggedSymbol,
151
+ recovered_payment_id: T.nilable(String)
152
+ }
153
+ )
154
+ end
155
+ def to_hash
156
+ end
157
+
158
+ module AbandonmentReason
159
+ extend Dodopayments::Internal::Type::Enum
160
+
161
+ TaggedSymbol =
162
+ T.type_alias do
163
+ T.all(
164
+ Symbol,
165
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason
166
+ )
167
+ end
168
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
169
+
170
+ PAYMENT_FAILED =
171
+ T.let(
172
+ :payment_failed,
173
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason::TaggedSymbol
174
+ )
175
+ CHECKOUT_INCOMPLETE =
176
+ T.let(
177
+ :checkout_incomplete,
178
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason::TaggedSymbol
179
+ )
180
+
181
+ sig do
182
+ override.returns(
183
+ T::Array[
184
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason::TaggedSymbol
185
+ ]
186
+ )
187
+ end
188
+ def self.values
189
+ end
190
+ end
191
+
192
+ module Status
193
+ extend Dodopayments::Internal::Type::Enum
194
+
195
+ TaggedSymbol =
196
+ T.type_alias do
197
+ T.all(
198
+ Symbol,
199
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status
200
+ )
201
+ end
202
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
203
+
204
+ ABANDONED =
205
+ T.let(
206
+ :abandoned,
207
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::TaggedSymbol
208
+ )
209
+ RECOVERING =
210
+ T.let(
211
+ :recovering,
212
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::TaggedSymbol
213
+ )
214
+ RECOVERED =
215
+ T.let(
216
+ :recovered,
217
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::TaggedSymbol
218
+ )
219
+ EXHAUSTED =
220
+ T.let(
221
+ :exhausted,
222
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::TaggedSymbol
223
+ )
224
+ OPTED_OUT =
225
+ T.let(
226
+ :opted_out,
227
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::TaggedSymbol
228
+ )
229
+
230
+ sig do
231
+ override.returns(
232
+ T::Array[
233
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status::TaggedSymbol
234
+ ]
235
+ )
236
+ end
237
+ def self.values
238
+ end
239
+ end
240
+ end
241
+
242
+ # The event type
243
+ module Type
244
+ extend Dodopayments::Internal::Type::Enum
245
+
246
+ TaggedSymbol =
247
+ T.type_alias do
248
+ T.all(
249
+ Symbol,
250
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Type
251
+ )
252
+ end
253
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
254
+
255
+ ABANDONED_CHECKOUT_RECOVERED =
256
+ T.let(
257
+ :"abandoned_checkout.recovered",
258
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Type::TaggedSymbol
259
+ )
260
+
261
+ sig do
262
+ override.returns(
263
+ T::Array[
264
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Type::TaggedSymbol
265
+ ]
266
+ )
267
+ end
268
+ def self.values
269
+ end
270
+ end
271
+ end
272
+ end
273
+ end
@@ -197,6 +197,16 @@ module Dodopayments
197
197
  :currency_conversion,
198
198
  Dodopayments::BalanceLedgerEntry::EventType::TaggedSymbol
199
199
  )
200
+ ABANDONED_CART_RECOVERY_FEE =
201
+ T.let(
202
+ :abandoned_cart_recovery_fee,
203
+ Dodopayments::BalanceLedgerEntry::EventType::TaggedSymbol
204
+ )
205
+ DUNNING_FEES =
206
+ T.let(
207
+ :dunning_fees,
208
+ Dodopayments::BalanceLedgerEntry::EventType::TaggedSymbol
209
+ )
200
210
 
201
211
  sig do
202
212
  override.returns(
@@ -995,6 +995,16 @@ module Dodopayments
995
995
  :currency_conversion,
996
996
  Dodopayments::BalanceRetrieveLedgerParams::EventType::TaggedSymbol
997
997
  )
998
+ ABANDONED_CART_RECOVERY_FEE =
999
+ T.let(
1000
+ :abandoned_cart_recovery_fee,
1001
+ Dodopayments::BalanceRetrieveLedgerParams::EventType::TaggedSymbol
1002
+ )
1003
+ DUNNING_FEES =
1004
+ T.let(
1005
+ :dunning_fees,
1006
+ Dodopayments::BalanceRetrieveLedgerParams::EventType::TaggedSymbol
1007
+ )
998
1008
 
999
1009
  sig do
1000
1010
  override.returns(
@@ -32,6 +32,9 @@ module Dodopayments
32
32
  sig { returns(String) }
33
33
  attr_accessor :discount_id
34
34
 
35
+ sig { returns(T::Hash[Symbol, String]) }
36
+ attr_accessor :metadata
37
+
35
38
  # Whether this discount should be preserved when a subscription changes plans.
36
39
  # Default: false (discount is removed on plan change)
37
40
  sig { returns(T::Boolean) }
@@ -74,6 +77,7 @@ module Dodopayments
74
77
  code: String,
75
78
  created_at: Time,
76
79
  discount_id: String,
80
+ metadata: T::Hash[Symbol, String],
77
81
  preserve_on_plan_change: T::Boolean,
78
82
  restricted_to: T::Array[String],
79
83
  times_used: Integer,
@@ -99,6 +103,7 @@ module Dodopayments
99
103
  created_at:,
100
104
  # The unique discount ID
101
105
  discount_id:,
106
+ metadata:,
102
107
  # Whether this discount should be preserved when a subscription changes plans.
103
108
  # Default: false (discount is removed on plan change)
104
109
  preserve_on_plan_change:,
@@ -129,6 +134,7 @@ module Dodopayments
129
134
  code: String,
130
135
  created_at: Time,
131
136
  discount_id: String,
137
+ metadata: T::Hash[Symbol, String],
132
138
  preserve_on_plan_change: T::Boolean,
133
139
  restricted_to: T::Array[String],
134
140
  times_used: Integer,
@@ -40,6 +40,13 @@ module Dodopayments
40
40
  sig { returns(T.nilable(Time)) }
41
41
  attr_accessor :expires_at
42
42
 
43
+ # Additional metadata for the discount
44
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
45
+ attr_reader :metadata
46
+
47
+ sig { params(metadata: T::Hash[Symbol, String]).void }
48
+ attr_writer :metadata
49
+
43
50
  sig { returns(T.nilable(String)) }
44
51
  attr_accessor :name
45
52
 
@@ -71,6 +78,7 @@ module Dodopayments
71
78
  type: Dodopayments::DiscountType::OrSymbol,
72
79
  code: T.nilable(String),
73
80
  expires_at: T.nilable(Time),
81
+ metadata: T::Hash[Symbol, String],
74
82
  name: T.nilable(String),
75
83
  preserve_on_plan_change: T::Boolean,
76
84
  restricted_to: T.nilable(T::Array[String]),
@@ -98,6 +106,8 @@ module Dodopayments
98
106
  code: nil,
99
107
  # When the discount expires, if ever.
100
108
  expires_at: nil,
109
+ # Additional metadata for the discount
110
+ metadata: nil,
101
111
  name: nil,
102
112
  # Whether this discount should be preserved when a subscription changes plans.
103
113
  # Default: false (discount is removed on plan change)
@@ -121,6 +131,7 @@ module Dodopayments
121
131
  type: Dodopayments::DiscountType::OrSymbol,
122
132
  code: T.nilable(String),
123
133
  expires_at: T.nilable(Time),
134
+ metadata: T::Hash[Symbol, String],
124
135
  name: T.nilable(String),
125
136
  preserve_on_plan_change: T::Boolean,
126
137
  restricted_to: T.nilable(T::Array[String]),
@@ -34,6 +34,10 @@ module Dodopayments
34
34
  sig { returns(T.nilable(Time)) }
35
35
  attr_accessor :expires_at
36
36
 
37
+ # Additional metadata for the discount
38
+ sig { returns(T.nilable(T::Hash[Symbol, String])) }
39
+ attr_accessor :metadata
40
+
37
41
  sig { returns(T.nilable(String)) }
38
42
  attr_accessor :name
39
43
 
@@ -66,6 +70,7 @@ module Dodopayments
66
70
  amount: T.nilable(Integer),
67
71
  code: T.nilable(String),
68
72
  expires_at: T.nilable(Time),
73
+ metadata: T.nilable(T::Hash[Symbol, String]),
69
74
  name: T.nilable(String),
70
75
  preserve_on_plan_change: T.nilable(T::Boolean),
71
76
  restricted_to: T.nilable(T::Array[String]),
@@ -88,6 +93,8 @@ module Dodopayments
88
93
  # If present, update the discount code (uppercase).
89
94
  code: nil,
90
95
  expires_at: nil,
96
+ # Additional metadata for the discount
97
+ metadata: nil,
91
98
  name: nil,
92
99
  # Whether this discount should be preserved when a subscription changes plans. If
93
100
  # not provided, the existing value is kept.
@@ -113,6 +120,7 @@ module Dodopayments
113
120
  amount: T.nilable(Integer),
114
121
  code: T.nilable(String),
115
122
  expires_at: T.nilable(Time),
123
+ metadata: T.nilable(T::Hash[Symbol, String]),
116
124
  name: T.nilable(String),
117
125
  preserve_on_plan_change: T.nilable(T::Boolean),
118
126
  restricted_to: T.nilable(T::Array[String]),
@@ -0,0 +1,249 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class DunningRecoveredWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::DunningRecoveredWebhookEvent,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # The business identifier
15
+ sig { returns(String) }
16
+ attr_accessor :business_id
17
+
18
+ # Webhook payload for dunning.started and dunning.recovered events
19
+ sig { returns(Dodopayments::DunningRecoveredWebhookEvent::Data) }
20
+ attr_reader :data
21
+
22
+ sig do
23
+ params(
24
+ data: Dodopayments::DunningRecoveredWebhookEvent::Data::OrHash
25
+ ).void
26
+ end
27
+ attr_writer :data
28
+
29
+ # The timestamp of when the event occurred
30
+ sig { returns(Time) }
31
+ attr_accessor :timestamp
32
+
33
+ # The event type
34
+ sig do
35
+ returns(Dodopayments::DunningRecoveredWebhookEvent::Type::TaggedSymbol)
36
+ end
37
+ attr_accessor :type
38
+
39
+ sig do
40
+ params(
41
+ business_id: String,
42
+ data: Dodopayments::DunningRecoveredWebhookEvent::Data::OrHash,
43
+ timestamp: Time,
44
+ type: Dodopayments::DunningRecoveredWebhookEvent::Type::OrSymbol
45
+ ).returns(T.attached_class)
46
+ end
47
+ def self.new(
48
+ # The business identifier
49
+ business_id:,
50
+ # Webhook payload for dunning.started and dunning.recovered events
51
+ data:,
52
+ # The timestamp of when the event occurred
53
+ timestamp:,
54
+ # The event type
55
+ type:
56
+ )
57
+ end
58
+
59
+ sig do
60
+ override.returns(
61
+ {
62
+ business_id: String,
63
+ data: Dodopayments::DunningRecoveredWebhookEvent::Data,
64
+ timestamp: Time,
65
+ type: Dodopayments::DunningRecoveredWebhookEvent::Type::TaggedSymbol
66
+ }
67
+ )
68
+ end
69
+ def to_hash
70
+ end
71
+
72
+ class Data < Dodopayments::Internal::Type::BaseModel
73
+ OrHash =
74
+ T.type_alias do
75
+ T.any(
76
+ Dodopayments::DunningRecoveredWebhookEvent::Data,
77
+ Dodopayments::Internal::AnyHash
78
+ )
79
+ end
80
+
81
+ sig { returns(Time) }
82
+ attr_accessor :created_at
83
+
84
+ sig { returns(String) }
85
+ attr_accessor :customer_id
86
+
87
+ sig do
88
+ returns(
89
+ Dodopayments::DunningRecoveredWebhookEvent::Data::Status::TaggedSymbol
90
+ )
91
+ end
92
+ attr_accessor :status
93
+
94
+ sig { returns(String) }
95
+ attr_accessor :subscription_id
96
+
97
+ sig do
98
+ returns(
99
+ Dodopayments::DunningRecoveredWebhookEvent::Data::TriggerState::TaggedSymbol
100
+ )
101
+ end
102
+ attr_accessor :trigger_state
103
+
104
+ sig { returns(T.nilable(String)) }
105
+ attr_accessor :payment_id
106
+
107
+ # Webhook payload for dunning.started and dunning.recovered events
108
+ sig do
109
+ params(
110
+ created_at: Time,
111
+ customer_id: String,
112
+ status:
113
+ Dodopayments::DunningRecoveredWebhookEvent::Data::Status::OrSymbol,
114
+ subscription_id: String,
115
+ trigger_state:
116
+ Dodopayments::DunningRecoveredWebhookEvent::Data::TriggerState::OrSymbol,
117
+ payment_id: T.nilable(String)
118
+ ).returns(T.attached_class)
119
+ end
120
+ def self.new(
121
+ created_at:,
122
+ customer_id:,
123
+ status:,
124
+ subscription_id:,
125
+ trigger_state:,
126
+ payment_id: nil
127
+ )
128
+ end
129
+
130
+ sig do
131
+ override.returns(
132
+ {
133
+ created_at: Time,
134
+ customer_id: String,
135
+ status:
136
+ Dodopayments::DunningRecoveredWebhookEvent::Data::Status::TaggedSymbol,
137
+ subscription_id: String,
138
+ trigger_state:
139
+ Dodopayments::DunningRecoveredWebhookEvent::Data::TriggerState::TaggedSymbol,
140
+ payment_id: T.nilable(String)
141
+ }
142
+ )
143
+ end
144
+ def to_hash
145
+ end
146
+
147
+ module Status
148
+ extend Dodopayments::Internal::Type::Enum
149
+
150
+ TaggedSymbol =
151
+ T.type_alias do
152
+ T.all(
153
+ Symbol,
154
+ Dodopayments::DunningRecoveredWebhookEvent::Data::Status
155
+ )
156
+ end
157
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
158
+
159
+ RECOVERING =
160
+ T.let(
161
+ :recovering,
162
+ Dodopayments::DunningRecoveredWebhookEvent::Data::Status::TaggedSymbol
163
+ )
164
+ RECOVERED =
165
+ T.let(
166
+ :recovered,
167
+ Dodopayments::DunningRecoveredWebhookEvent::Data::Status::TaggedSymbol
168
+ )
169
+ EXHAUSTED =
170
+ T.let(
171
+ :exhausted,
172
+ Dodopayments::DunningRecoveredWebhookEvent::Data::Status::TaggedSymbol
173
+ )
174
+
175
+ sig do
176
+ override.returns(
177
+ T::Array[
178
+ Dodopayments::DunningRecoveredWebhookEvent::Data::Status::TaggedSymbol
179
+ ]
180
+ )
181
+ end
182
+ def self.values
183
+ end
184
+ end
185
+
186
+ module TriggerState
187
+ extend Dodopayments::Internal::Type::Enum
188
+
189
+ TaggedSymbol =
190
+ T.type_alias do
191
+ T.all(
192
+ Symbol,
193
+ Dodopayments::DunningRecoveredWebhookEvent::Data::TriggerState
194
+ )
195
+ end
196
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
197
+
198
+ ON_HOLD =
199
+ T.let(
200
+ :on_hold,
201
+ Dodopayments::DunningRecoveredWebhookEvent::Data::TriggerState::TaggedSymbol
202
+ )
203
+ CANCELLED =
204
+ T.let(
205
+ :cancelled,
206
+ Dodopayments::DunningRecoveredWebhookEvent::Data::TriggerState::TaggedSymbol
207
+ )
208
+
209
+ sig do
210
+ override.returns(
211
+ T::Array[
212
+ Dodopayments::DunningRecoveredWebhookEvent::Data::TriggerState::TaggedSymbol
213
+ ]
214
+ )
215
+ end
216
+ def self.values
217
+ end
218
+ end
219
+ end
220
+
221
+ # The event type
222
+ module Type
223
+ extend Dodopayments::Internal::Type::Enum
224
+
225
+ TaggedSymbol =
226
+ T.type_alias do
227
+ T.all(Symbol, Dodopayments::DunningRecoveredWebhookEvent::Type)
228
+ end
229
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
230
+
231
+ DUNNING_RECOVERED =
232
+ T.let(
233
+ :"dunning.recovered",
234
+ Dodopayments::DunningRecoveredWebhookEvent::Type::TaggedSymbol
235
+ )
236
+
237
+ sig do
238
+ override.returns(
239
+ T::Array[
240
+ Dodopayments::DunningRecoveredWebhookEvent::Type::TaggedSymbol
241
+ ]
242
+ )
243
+ end
244
+ def self.values
245
+ end
246
+ end
247
+ end
248
+ end
249
+ end