dodopayments 2.4.1 → 2.5.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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -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/dunning_recovered_webhook_event.rb +118 -0
  10. data/lib/dodopayments/models/dunning_started_webhook_event.rb +118 -0
  11. data/lib/dodopayments/models/payouts/breakup/detail_download_csv_params.rb +24 -0
  12. data/lib/dodopayments/models/payouts/breakup/detail_list_params.rb +41 -0
  13. data/lib/dodopayments/models/payouts/breakup/detail_list_response.rb +94 -0
  14. data/lib/dodopayments/models/payouts/breakup_retrieve_params.rb +22 -0
  15. data/lib/dodopayments/models/payouts/breakup_retrieve_response.rb +37 -0
  16. data/lib/dodopayments/models/subscription_update_params.rb +19 -1
  17. data/lib/dodopayments/models/unsafe_unwrap_webhook_event.rb +9 -1
  18. data/lib/dodopayments/models/unwrap_webhook_event.rb +9 -1
  19. data/lib/dodopayments/models/webhook_event_type.rb +6 -0
  20. data/lib/dodopayments/models/webhook_payload.rb +168 -3
  21. data/lib/dodopayments/models.rb +10 -0
  22. data/lib/dodopayments/resources/payouts/breakup/details.rb +72 -0
  23. data/lib/dodopayments/resources/payouts/breakup.rb +43 -0
  24. data/lib/dodopayments/resources/payouts.rb +4 -0
  25. data/lib/dodopayments/resources/subscriptions.rb +3 -1
  26. data/lib/dodopayments/resources/webhooks.rb +2 -2
  27. data/lib/dodopayments/version.rb +1 -1
  28. data/lib/dodopayments.rb +11 -0
  29. data/rbi/dodopayments/internal/util.rbi +8 -0
  30. data/rbi/dodopayments/models/abandoned_checkout_detected_webhook_event.rbi +271 -0
  31. data/rbi/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbi +273 -0
  32. data/rbi/dodopayments/models/balance_ledger_entry.rbi +10 -0
  33. data/rbi/dodopayments/models/balance_retrieve_ledger_params.rbi +10 -0
  34. data/rbi/dodopayments/models/dunning_recovered_webhook_event.rbi +249 -0
  35. data/rbi/dodopayments/models/dunning_started_webhook_event.rbi +249 -0
  36. data/rbi/dodopayments/models/payouts/breakup/detail_download_csv_params.rbi +45 -0
  37. data/rbi/dodopayments/models/payouts/breakup/detail_list_params.rbi +70 -0
  38. data/rbi/dodopayments/models/payouts/breakup/detail_list_response.rbi +116 -0
  39. data/rbi/dodopayments/models/payouts/breakup_retrieve_params.rbi +40 -0
  40. data/rbi/dodopayments/models/payouts/breakup_retrieve_response.rbi +53 -0
  41. data/rbi/dodopayments/models/subscription_update_params.rbi +54 -0
  42. data/rbi/dodopayments/models/unsafe_unwrap_webhook_event.rbi +4 -0
  43. data/rbi/dodopayments/models/unwrap_webhook_event.rbi +4 -0
  44. data/rbi/dodopayments/models/webhook_event_type.rbi +21 -0
  45. data/rbi/dodopayments/models/webhook_payload.rbi +400 -4
  46. data/rbi/dodopayments/models.rbi +13 -0
  47. data/rbi/dodopayments/resources/payouts/breakup/details.rbi +60 -0
  48. data/rbi/dodopayments/resources/payouts/breakup.rbi +36 -0
  49. data/rbi/dodopayments/resources/payouts.rbi +3 -0
  50. data/rbi/dodopayments/resources/subscriptions.rbi +5 -0
  51. data/rbi/dodopayments/resources/webhooks.rbi +8 -0
  52. data/sig/dodopayments/internal/util.rbs +4 -0
  53. data/sig/dodopayments/models/abandoned_checkout_detected_webhook_event.rbs +113 -0
  54. data/sig/dodopayments/models/abandoned_checkout_recovered_webhook_event.rbs +113 -0
  55. data/sig/dodopayments/models/balance_ledger_entry.rbs +4 -0
  56. data/sig/dodopayments/models/balance_retrieve_ledger_params.rbs +4 -0
  57. data/sig/dodopayments/models/dunning_recovered_webhook_event.rbs +110 -0
  58. data/sig/dodopayments/models/dunning_started_webhook_event.rbs +110 -0
  59. data/sig/dodopayments/models/payouts/breakup/detail_download_csv_params.rbs +28 -0
  60. data/sig/dodopayments/models/payouts/breakup/detail_list_params.rbs +40 -0
  61. data/sig/dodopayments/models/payouts/breakup/detail_list_response.rbs +64 -0
  62. data/sig/dodopayments/models/payouts/breakup_retrieve_params.rbs +25 -0
  63. data/sig/dodopayments/models/payouts/breakup_retrieve_response.rbs +23 -0
  64. data/sig/dodopayments/models/subscription_update_params.rbs +20 -0
  65. data/sig/dodopayments/models/unsafe_unwrap_webhook_event.rbs +5 -1
  66. data/sig/dodopayments/models/unwrap_webhook_event.rbs +5 -1
  67. data/sig/dodopayments/models/webhook_event_type.rbs +12 -0
  68. data/sig/dodopayments/models/webhook_payload.rbs +165 -0
  69. data/sig/dodopayments/models.rbs +10 -0
  70. data/sig/dodopayments/resources/payouts/breakup/details.rbs +23 -0
  71. data/sig/dodopayments/resources/payouts/breakup.rbs +16 -0
  72. data/sig/dodopayments/resources/payouts.rbs +2 -0
  73. data/sig/dodopayments/resources/subscriptions.rbs +1 -0
  74. data/sig/dodopayments/resources/webhooks.rbs +10 -2
  75. metadata +35 -2
@@ -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,
@@ -143,6 +143,27 @@ module Dodopayments
143
143
  :"credit.balance_low",
144
144
  Dodopayments::WebhookEventType::TaggedSymbol
145
145
  )
146
+ ABANDONED_CHECKOUT_DETECTED =
147
+ T.let(
148
+ :"abandoned_checkout.detected",
149
+ Dodopayments::WebhookEventType::TaggedSymbol
150
+ )
151
+ ABANDONED_CHECKOUT_RECOVERED =
152
+ T.let(
153
+ :"abandoned_checkout.recovered",
154
+ Dodopayments::WebhookEventType::TaggedSymbol
155
+ )
156
+ DUNNING_STARTED =
157
+ T.let(:"dunning.started", Dodopayments::WebhookEventType::TaggedSymbol)
158
+ DUNNING_RECOVERED =
159
+ T.let(
160
+ :"dunning.recovered",
161
+ Dodopayments::WebhookEventType::TaggedSymbol
162
+ )
163
+ ACR_EMAIL =
164
+ T.let(:"acr.email", Dodopayments::WebhookEventType::TaggedSymbol)
165
+ DUNNING_EMAIL =
166
+ T.let(:"dunning.email", Dodopayments::WebhookEventType::TaggedSymbol)
146
167
 
147
168
  sig do
148
169
  override.returns(T::Array[Dodopayments::WebhookEventType::TaggedSymbol])