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,249 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class DunningStartedWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::DunningStartedWebhookEvent,
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::DunningStartedWebhookEvent::Data) }
20
+ attr_reader :data
21
+
22
+ sig do
23
+ params(
24
+ data: Dodopayments::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::Type::TaggedSymbol)
36
+ end
37
+ attr_accessor :type
38
+
39
+ sig do
40
+ params(
41
+ business_id: String,
42
+ data: Dodopayments::DunningStartedWebhookEvent::Data::OrHash,
43
+ timestamp: Time,
44
+ type: Dodopayments::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::Data,
64
+ timestamp: Time,
65
+ type: Dodopayments::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::Data::Status::OrSymbol,
114
+ subscription_id: String,
115
+ trigger_state:
116
+ Dodopayments::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::Data::Status::TaggedSymbol,
137
+ subscription_id: String,
138
+ trigger_state:
139
+ Dodopayments::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::Data::Status
155
+ )
156
+ end
157
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
158
+
159
+ RECOVERING =
160
+ T.let(
161
+ :recovering,
162
+ Dodopayments::DunningStartedWebhookEvent::Data::Status::TaggedSymbol
163
+ )
164
+ RECOVERED =
165
+ T.let(
166
+ :recovered,
167
+ Dodopayments::DunningStartedWebhookEvent::Data::Status::TaggedSymbol
168
+ )
169
+ EXHAUSTED =
170
+ T.let(
171
+ :exhausted,
172
+ Dodopayments::DunningStartedWebhookEvent::Data::Status::TaggedSymbol
173
+ )
174
+
175
+ sig do
176
+ override.returns(
177
+ T::Array[
178
+ Dodopayments::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::Data::TriggerState::TaggedSymbol
202
+ )
203
+ CANCELLED =
204
+ T.let(
205
+ :cancelled,
206
+ Dodopayments::DunningStartedWebhookEvent::Data::TriggerState::TaggedSymbol
207
+ )
208
+
209
+ sig do
210
+ override.returns(
211
+ T::Array[
212
+ Dodopayments::DunningStartedWebhookEvent::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::DunningStartedWebhookEvent::Type)
228
+ end
229
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
230
+
231
+ DUNNING_STARTED =
232
+ T.let(
233
+ :"dunning.started",
234
+ Dodopayments::DunningStartedWebhookEvent::Type::TaggedSymbol
235
+ )
236
+
237
+ sig do
238
+ override.returns(
239
+ T::Array[
240
+ Dodopayments::DunningStartedWebhookEvent::Type::TaggedSymbol
241
+ ]
242
+ )
243
+ end
244
+ def self.values
245
+ end
246
+ end
247
+ end
248
+ end
249
+ end
@@ -0,0 +1,45 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Payouts
6
+ module Breakup
7
+ class DetailDownloadCsvParams < Dodopayments::Internal::Type::BaseModel
8
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
9
+ include Dodopayments::Internal::Type::RequestParameters
10
+
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ Dodopayments::Payouts::Breakup::DetailDownloadCsvParams,
15
+ Dodopayments::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ sig { returns(String) }
20
+ attr_accessor :payout_id
21
+
22
+ sig do
23
+ params(
24
+ payout_id: String,
25
+ request_options: Dodopayments::RequestOptions::OrHash
26
+ ).returns(T.attached_class)
27
+ end
28
+ def self.new(payout_id:, request_options: {})
29
+ end
30
+
31
+ sig do
32
+ override.returns(
33
+ {
34
+ payout_id: String,
35
+ request_options: Dodopayments::RequestOptions
36
+ }
37
+ )
38
+ end
39
+ def to_hash
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,70 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Payouts
6
+ module Breakup
7
+ class DetailListParams < Dodopayments::Internal::Type::BaseModel
8
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
9
+ include Dodopayments::Internal::Type::RequestParameters
10
+
11
+ OrHash =
12
+ T.type_alias do
13
+ T.any(
14
+ Dodopayments::Payouts::Breakup::DetailListParams,
15
+ Dodopayments::Internal::AnyHash
16
+ )
17
+ end
18
+
19
+ sig { returns(String) }
20
+ attr_accessor :payout_id
21
+
22
+ # Page number (0-indexed). Default: 0.
23
+ sig { returns(T.nilable(Integer)) }
24
+ attr_reader :page_number
25
+
26
+ sig { params(page_number: Integer).void }
27
+ attr_writer :page_number
28
+
29
+ # Number of items per page. Default: 10, Max: 100.
30
+ sig { returns(T.nilable(Integer)) }
31
+ attr_reader :page_size
32
+
33
+ sig { params(page_size: Integer).void }
34
+ attr_writer :page_size
35
+
36
+ sig do
37
+ params(
38
+ payout_id: String,
39
+ page_number: Integer,
40
+ page_size: Integer,
41
+ request_options: Dodopayments::RequestOptions::OrHash
42
+ ).returns(T.attached_class)
43
+ end
44
+ def self.new(
45
+ payout_id:,
46
+ # Page number (0-indexed). Default: 0.
47
+ page_number: nil,
48
+ # Number of items per page. Default: 10, Max: 100.
49
+ page_size: nil,
50
+ request_options: {}
51
+ )
52
+ end
53
+
54
+ sig do
55
+ override.returns(
56
+ {
57
+ payout_id: String,
58
+ page_number: Integer,
59
+ page_size: Integer,
60
+ request_options: Dodopayments::RequestOptions
61
+ }
62
+ )
63
+ end
64
+ def to_hash
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,116 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Payouts
6
+ module Breakup
7
+ class DetailListResponse < Dodopayments::Internal::Type::BaseModel
8
+ OrHash =
9
+ T.type_alias do
10
+ T.any(
11
+ Dodopayments::Models::Payouts::Breakup::DetailListResponse,
12
+ Dodopayments::Internal::AnyHash
13
+ )
14
+ end
15
+
16
+ # Unique identifier of the balance ledger entry.
17
+ sig { returns(String) }
18
+ attr_accessor :id
19
+
20
+ # Timestamp when this entry was created.
21
+ sig { returns(Time) }
22
+ attr_accessor :created_at
23
+
24
+ # The type of balance ledger event (e.g., "payment", "refund", "dispute",
25
+ # "payment_fees").
26
+ sig { returns(String) }
27
+ attr_accessor :event_type
28
+
29
+ # Original amount in the original currency (in smallest currency unit, e.g.,
30
+ # cents).
31
+ sig { returns(Integer) }
32
+ attr_accessor :original_amount
33
+
34
+ # Original currency as ISO 4217 code (e.g., "USD", "EUR").
35
+ sig { returns(String) }
36
+ attr_accessor :original_currency
37
+
38
+ # Amount in the payout's currency (in smallest currency unit). Uses cumulative
39
+ # rounding to ensure sum matches payout total exactly.
40
+ sig { returns(Integer) }
41
+ attr_accessor :payout_currency_amount
42
+
43
+ # USD equivalent of the original amount (in cents).
44
+ sig { returns(Integer) }
45
+ attr_accessor :usd_equivalent_amount
46
+
47
+ # Human-readable description of the transaction.
48
+ sig { returns(T.nilable(String)) }
49
+ attr_accessor :description
50
+
51
+ # ID of the related object (e.g., payment ID, refund ID) if applicable.
52
+ sig { returns(T.nilable(String)) }
53
+ attr_accessor :reference_object_id
54
+
55
+ # Individual balance ledger entry for a payout, with amounts pro-rated into the
56
+ # payout's currency.
57
+ sig do
58
+ params(
59
+ id: String,
60
+ created_at: Time,
61
+ event_type: String,
62
+ original_amount: Integer,
63
+ original_currency: String,
64
+ payout_currency_amount: Integer,
65
+ usd_equivalent_amount: Integer,
66
+ description: T.nilable(String),
67
+ reference_object_id: T.nilable(String)
68
+ ).returns(T.attached_class)
69
+ end
70
+ def self.new(
71
+ # Unique identifier of the balance ledger entry.
72
+ id:,
73
+ # Timestamp when this entry was created.
74
+ created_at:,
75
+ # The type of balance ledger event (e.g., "payment", "refund", "dispute",
76
+ # "payment_fees").
77
+ event_type:,
78
+ # Original amount in the original currency (in smallest currency unit, e.g.,
79
+ # cents).
80
+ original_amount:,
81
+ # Original currency as ISO 4217 code (e.g., "USD", "EUR").
82
+ original_currency:,
83
+ # Amount in the payout's currency (in smallest currency unit). Uses cumulative
84
+ # rounding to ensure sum matches payout total exactly.
85
+ payout_currency_amount:,
86
+ # USD equivalent of the original amount (in cents).
87
+ usd_equivalent_amount:,
88
+ # Human-readable description of the transaction.
89
+ description: nil,
90
+ # ID of the related object (e.g., payment ID, refund ID) if applicable.
91
+ reference_object_id: nil
92
+ )
93
+ end
94
+
95
+ sig do
96
+ override.returns(
97
+ {
98
+ id: String,
99
+ created_at: Time,
100
+ event_type: String,
101
+ original_amount: Integer,
102
+ original_currency: String,
103
+ payout_currency_amount: Integer,
104
+ usd_equivalent_amount: Integer,
105
+ description: T.nilable(String),
106
+ reference_object_id: T.nilable(String)
107
+ }
108
+ )
109
+ end
110
+ def to_hash
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,40 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Payouts
6
+ class BreakupRetrieveParams < Dodopayments::Internal::Type::BaseModel
7
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
8
+ include Dodopayments::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Dodopayments::Payouts::BreakupRetrieveParams,
14
+ Dodopayments::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ sig { returns(String) }
19
+ attr_accessor :payout_id
20
+
21
+ sig do
22
+ params(
23
+ payout_id: String,
24
+ request_options: Dodopayments::RequestOptions::OrHash
25
+ ).returns(T.attached_class)
26
+ end
27
+ def self.new(payout_id:, request_options: {})
28
+ end
29
+
30
+ sig do
31
+ override.returns(
32
+ { payout_id: String, request_options: Dodopayments::RequestOptions }
33
+ )
34
+ end
35
+ def to_hash
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,53 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Payouts
6
+ class BreakupRetrieveResponseItem < Dodopayments::Internal::Type::BaseModel
7
+ OrHash =
8
+ T.type_alias do
9
+ T.any(
10
+ Dodopayments::Models::Payouts::BreakupRetrieveResponseItem,
11
+ Dodopayments::Internal::AnyHash
12
+ )
13
+ end
14
+
15
+ # The type of balance ledger event (e.g., "payment", "refund", "dispute",
16
+ # "payment_fees").
17
+ sig { returns(String) }
18
+ attr_accessor :event_type
19
+
20
+ # Total amount for this event type in the payout's currency (in smallest currency
21
+ # unit, e.g., cents).
22
+ sig { returns(Integer) }
23
+ attr_accessor :total
24
+
25
+ # Payout breakup aggregated by event type, with amounts in the payout's currency.
26
+ sig do
27
+ params(event_type: String, total: Integer).returns(T.attached_class)
28
+ end
29
+ def self.new(
30
+ # The type of balance ledger event (e.g., "payment", "refund", "dispute",
31
+ # "payment_fees").
32
+ event_type:,
33
+ # Total amount for this event type in the payout's currency (in smallest currency
34
+ # unit, e.g., cents).
35
+ total:
36
+ )
37
+ end
38
+
39
+ sig { override.returns({ event_type: String, total: Integer }) }
40
+ def to_hash
41
+ end
42
+ end
43
+
44
+ BreakupRetrieveResponse =
45
+ T.let(
46
+ Dodopayments::Internal::Type::ArrayOf[
47
+ Dodopayments::Models::Payouts::BreakupRetrieveResponseItem
48
+ ],
49
+ Dodopayments::Internal::Type::Converter
50
+ )
51
+ end
52
+ end
53
+ end
@@ -29,6 +29,15 @@ module Dodopayments
29
29
  sig { returns(T.nilable(T::Boolean)) }
30
30
  attr_accessor :cancel_at_next_billing_date
31
31
 
32
+ sig do
33
+ returns(
34
+ T.nilable(
35
+ Dodopayments::SubscriptionUpdateParams::CancelReason::OrSymbol
36
+ )
37
+ )
38
+ end
39
+ attr_accessor :cancel_reason
40
+
32
41
  # Update credit entitlement cart settings
33
42
  sig do
34
43
  returns(
@@ -78,6 +87,10 @@ module Dodopayments
78
87
  subscription_id: String,
79
88
  billing: T.nilable(Dodopayments::BillingAddress::OrHash),
80
89
  cancel_at_next_billing_date: T.nilable(T::Boolean),
90
+ cancel_reason:
91
+ T.nilable(
92
+ Dodopayments::SubscriptionUpdateParams::CancelReason::OrSymbol
93
+ ),
81
94
  credit_entitlement_cart:
82
95
  T.nilable(
83
96
  T::Array[
@@ -101,6 +114,7 @@ module Dodopayments
101
114
  billing: nil,
102
115
  # When set, the subscription will remain active until the end of billing period
103
116
  cancel_at_next_billing_date: nil,
117
+ cancel_reason: nil,
104
118
  # Update credit entitlement cart settings
105
119
  credit_entitlement_cart: nil,
106
120
  customer_name: nil,
@@ -119,6 +133,10 @@ module Dodopayments
119
133
  subscription_id: String,
120
134
  billing: T.nilable(Dodopayments::BillingAddress),
121
135
  cancel_at_next_billing_date: T.nilable(T::Boolean),
136
+ cancel_reason:
137
+ T.nilable(
138
+ Dodopayments::SubscriptionUpdateParams::CancelReason::OrSymbol
139
+ ),
122
140
  credit_entitlement_cart:
123
141
  T.nilable(
124
142
  T::Array[
@@ -141,6 +159,42 @@ module Dodopayments
141
159
  def to_hash
142
160
  end
143
161
 
162
+ module CancelReason
163
+ extend Dodopayments::Internal::Type::Enum
164
+
165
+ TaggedSymbol =
166
+ T.type_alias do
167
+ T.all(Symbol, Dodopayments::SubscriptionUpdateParams::CancelReason)
168
+ end
169
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
170
+
171
+ CANCELLED_BY_CUSTOMER =
172
+ T.let(
173
+ :cancelled_by_customer,
174
+ Dodopayments::SubscriptionUpdateParams::CancelReason::TaggedSymbol
175
+ )
176
+ CANCELLED_BY_MERCHANT =
177
+ T.let(
178
+ :cancelled_by_merchant,
179
+ Dodopayments::SubscriptionUpdateParams::CancelReason::TaggedSymbol
180
+ )
181
+ CANCELLED_BY_MERCHANT_SEND_DUNNING =
182
+ T.let(
183
+ :cancelled_by_merchant_send_dunning,
184
+ Dodopayments::SubscriptionUpdateParams::CancelReason::TaggedSymbol
185
+ )
186
+
187
+ sig do
188
+ override.returns(
189
+ T::Array[
190
+ Dodopayments::SubscriptionUpdateParams::CancelReason::TaggedSymbol
191
+ ]
192
+ )
193
+ end
194
+ def self.values
195
+ end
196
+ end
197
+
144
198
  class CreditEntitlementCart < Dodopayments::Internal::Type::BaseModel
145
199
  OrHash =
146
200
  T.type_alias do
@@ -8,6 +8,8 @@ module Dodopayments
8
8
  Variants =
9
9
  T.type_alias do
10
10
  T.any(
11
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent,
12
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent,
11
13
  Dodopayments::CreditAddedWebhookEvent,
12
14
  Dodopayments::CreditBalanceLowWebhookEvent,
13
15
  Dodopayments::CreditDeductedWebhookEvent,
@@ -23,6 +25,8 @@ module Dodopayments
23
25
  Dodopayments::DisputeLostWebhookEvent,
24
26
  Dodopayments::DisputeOpenedWebhookEvent,
25
27
  Dodopayments::DisputeWonWebhookEvent,
28
+ Dodopayments::DunningRecoveredWebhookEvent,
29
+ Dodopayments::DunningStartedWebhookEvent,
26
30
  Dodopayments::LicenseKeyCreatedWebhookEvent,
27
31
  Dodopayments::PaymentCancelledWebhookEvent,
28
32
  Dodopayments::PaymentFailedWebhookEvent,
@@ -8,6 +8,8 @@ module Dodopayments
8
8
  Variants =
9
9
  T.type_alias do
10
10
  T.any(
11
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent,
12
+ Dodopayments::AbandonedCheckoutRecoveredWebhookEvent,
11
13
  Dodopayments::CreditAddedWebhookEvent,
12
14
  Dodopayments::CreditBalanceLowWebhookEvent,
13
15
  Dodopayments::CreditDeductedWebhookEvent,
@@ -23,6 +25,8 @@ module Dodopayments
23
25
  Dodopayments::DisputeLostWebhookEvent,
24
26
  Dodopayments::DisputeOpenedWebhookEvent,
25
27
  Dodopayments::DisputeWonWebhookEvent,
28
+ Dodopayments::DunningRecoveredWebhookEvent,
29
+ Dodopayments::DunningStartedWebhookEvent,
26
30
  Dodopayments::LicenseKeyCreatedWebhookEvent,
27
31
  Dodopayments::PaymentCancelledWebhookEvent,
28
32
  Dodopayments::PaymentFailedWebhookEvent,