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,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Payouts
6
+ module Breakup
7
+ # @see Dodopayments::Resources::Payouts::Breakup::Details#list
8
+ class DetailListResponse < Dodopayments::Internal::Type::BaseModel
9
+ # @!attribute id
10
+ # Unique identifier of the balance ledger entry.
11
+ #
12
+ # @return [String]
13
+ required :id, String
14
+
15
+ # @!attribute created_at
16
+ # Timestamp when this entry was created.
17
+ #
18
+ # @return [Time]
19
+ required :created_at, Time
20
+
21
+ # @!attribute event_type
22
+ # The type of balance ledger event (e.g., "payment", "refund", "dispute",
23
+ # "payment_fees").
24
+ #
25
+ # @return [String]
26
+ required :event_type, String
27
+
28
+ # @!attribute original_amount
29
+ # Original amount in the original currency (in smallest currency unit, e.g.,
30
+ # cents).
31
+ #
32
+ # @return [Integer]
33
+ required :original_amount, Integer
34
+
35
+ # @!attribute original_currency
36
+ # Original currency as ISO 4217 code (e.g., "USD", "EUR").
37
+ #
38
+ # @return [String]
39
+ required :original_currency, String
40
+
41
+ # @!attribute payout_currency_amount
42
+ # Amount in the payout's currency (in smallest currency unit). Uses cumulative
43
+ # rounding to ensure sum matches payout total exactly.
44
+ #
45
+ # @return [Integer]
46
+ required :payout_currency_amount, Integer
47
+
48
+ # @!attribute usd_equivalent_amount
49
+ # USD equivalent of the original amount (in cents).
50
+ #
51
+ # @return [Integer]
52
+ required :usd_equivalent_amount, Integer
53
+
54
+ # @!attribute description
55
+ # Human-readable description of the transaction.
56
+ #
57
+ # @return [String, nil]
58
+ optional :description, String, nil?: true
59
+
60
+ # @!attribute reference_object_id
61
+ # ID of the related object (e.g., payment ID, refund ID) if applicable.
62
+ #
63
+ # @return [String, nil]
64
+ optional :reference_object_id, String, nil?: true
65
+
66
+ # @!method initialize(id:, created_at:, event_type:, original_amount:, original_currency:, payout_currency_amount:, usd_equivalent_amount:, description: nil, reference_object_id: nil)
67
+ # Some parameter documentations has been truncated, see
68
+ # {Dodopayments::Models::Payouts::Breakup::DetailListResponse} for more details.
69
+ #
70
+ # Individual balance ledger entry for a payout, with amounts pro-rated into the
71
+ # payout's currency.
72
+ #
73
+ # @param id [String] Unique identifier of the balance ledger entry.
74
+ #
75
+ # @param created_at [Time] Timestamp when this entry was created.
76
+ #
77
+ # @param event_type [String] The type of balance ledger event (e.g., "payment", "refund", "dispute", "payment
78
+ #
79
+ # @param original_amount [Integer] Original amount in the original currency (in smallest currency unit, e.g., cents
80
+ #
81
+ # @param original_currency [String] Original currency as ISO 4217 code (e.g., "USD", "EUR").
82
+ #
83
+ # @param payout_currency_amount [Integer] Amount in the payout's currency (in smallest currency unit). Uses cumulative rou
84
+ #
85
+ # @param usd_equivalent_amount [Integer] USD equivalent of the original amount (in cents).
86
+ #
87
+ # @param description [String, nil] Human-readable description of the transaction.
88
+ #
89
+ # @param reference_object_id [String, nil] ID of the related object (e.g., payment ID, refund ID) if applicable.
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Payouts
6
+ # @see Dodopayments::Resources::Payouts::Breakup#retrieve
7
+ class BreakupRetrieveParams < Dodopayments::Internal::Type::BaseModel
8
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
9
+ include Dodopayments::Internal::Type::RequestParameters
10
+
11
+ # @!attribute payout_id
12
+ #
13
+ # @return [String]
14
+ required :payout_id, String
15
+
16
+ # @!method initialize(payout_id:, request_options: {})
17
+ # @param payout_id [String]
18
+ # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Models
5
+ module Payouts
6
+ class BreakupRetrieveResponseItem < Dodopayments::Internal::Type::BaseModel
7
+ # @!attribute event_type
8
+ # The type of balance ledger event (e.g., "payment", "refund", "dispute",
9
+ # "payment_fees").
10
+ #
11
+ # @return [String]
12
+ required :event_type, String
13
+
14
+ # @!attribute total
15
+ # Total amount for this event type in the payout's currency (in smallest currency
16
+ # unit, e.g., cents).
17
+ #
18
+ # @return [Integer]
19
+ required :total, Integer
20
+
21
+ # @!method initialize(event_type:, total:)
22
+ # Some parameter documentations has been truncated, see
23
+ # {Dodopayments::Models::Payouts::BreakupRetrieveResponseItem} for more details.
24
+ #
25
+ # Payout breakup aggregated by event type, with amounts in the payout's currency.
26
+ #
27
+ # @param event_type [String] The type of balance ledger event (e.g., "payment", "refund", "dispute", "payment
28
+ #
29
+ # @param total [Integer] Total amount for this event type in the payout's currency (in smallest currency
30
+ end
31
+
32
+ # @type [Dodopayments::Internal::Type::Converter]
33
+ BreakupRetrieveResponse =
34
+ Dodopayments::Internal::Type::ArrayOf[-> { Dodopayments::Models::Payouts::BreakupRetrieveResponseItem }]
35
+ end
36
+ end
37
+ end
@@ -23,6 +23,11 @@ module Dodopayments
23
23
  # @return [Boolean, nil]
24
24
  optional :cancel_at_next_billing_date, Dodopayments::Internal::Type::Boolean, nil?: true
25
25
 
26
+ # @!attribute cancel_reason
27
+ #
28
+ # @return [Symbol, Dodopayments::Models::SubscriptionUpdateParams::CancelReason, nil]
29
+ optional :cancel_reason, enum: -> { Dodopayments::SubscriptionUpdateParams::CancelReason }, nil?: true
30
+
26
31
  # @!attribute credit_entitlement_cart
27
32
  # Update credit entitlement cart settings
28
33
  #
@@ -63,13 +68,15 @@ module Dodopayments
63
68
  # @return [String, nil]
64
69
  optional :tax_id, String, nil?: true
65
70
 
66
- # @!method initialize(subscription_id:, billing: nil, cancel_at_next_billing_date: nil, credit_entitlement_cart: nil, customer_name: nil, disable_on_demand: nil, metadata: nil, next_billing_date: nil, status: nil, tax_id: nil, request_options: {})
71
+ # @!method initialize(subscription_id:, billing: nil, cancel_at_next_billing_date: nil, cancel_reason: nil, credit_entitlement_cart: nil, customer_name: nil, disable_on_demand: nil, metadata: nil, next_billing_date: nil, status: nil, tax_id: nil, request_options: {})
67
72
  # @param subscription_id [String]
68
73
  #
69
74
  # @param billing [Dodopayments::Models::BillingAddress, nil]
70
75
  #
71
76
  # @param cancel_at_next_billing_date [Boolean, nil] When set, the subscription will remain active until the end of billing period
72
77
  #
78
+ # @param cancel_reason [Symbol, Dodopayments::Models::SubscriptionUpdateParams::CancelReason, nil]
79
+ #
73
80
  # @param credit_entitlement_cart [Array<Dodopayments::Models::SubscriptionUpdateParams::CreditEntitlementCart>, nil] Update credit entitlement cart settings
74
81
  #
75
82
  # @param customer_name [String, nil]
@@ -86,6 +93,17 @@ module Dodopayments
86
93
  #
87
94
  # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}]
88
95
 
96
+ module CancelReason
97
+ extend Dodopayments::Internal::Type::Enum
98
+
99
+ CANCELLED_BY_CUSTOMER = :cancelled_by_customer
100
+ CANCELLED_BY_MERCHANT = :cancelled_by_merchant
101
+ CANCELLED_BY_MERCHANT_SEND_DUNNING = :cancelled_by_merchant_send_dunning
102
+
103
+ # @!method self.values
104
+ # @return [Array<Symbol>]
105
+ end
106
+
89
107
  class CreditEntitlementCart < Dodopayments::Internal::Type::BaseModel
90
108
  # @!attribute credit_entitlement_id
91
109
  #
@@ -5,6 +5,10 @@ module Dodopayments
5
5
  module UnsafeUnwrapWebhookEvent
6
6
  extend Dodopayments::Internal::Type::Union
7
7
 
8
+ variant -> { Dodopayments::AbandonedCheckoutDetectedWebhookEvent }
9
+
10
+ variant -> { Dodopayments::AbandonedCheckoutRecoveredWebhookEvent }
11
+
8
12
  variant -> { Dodopayments::CreditAddedWebhookEvent }
9
13
 
10
14
  variant -> { Dodopayments::CreditBalanceLowWebhookEvent }
@@ -35,6 +39,10 @@ module Dodopayments
35
39
 
36
40
  variant -> { Dodopayments::DisputeWonWebhookEvent }
37
41
 
42
+ variant -> { Dodopayments::DunningRecoveredWebhookEvent }
43
+
44
+ variant -> { Dodopayments::DunningStartedWebhookEvent }
45
+
38
46
  variant -> { Dodopayments::LicenseKeyCreatedWebhookEvent }
39
47
 
40
48
  variant -> { Dodopayments::PaymentCancelledWebhookEvent }
@@ -66,7 +74,7 @@ module Dodopayments
66
74
  variant -> { Dodopayments::SubscriptionUpdatedWebhookEvent }
67
75
 
68
76
  # @!method self.variants
69
- # @return [Array(Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
77
+ # @return [Array(Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
70
78
  end
71
79
  end
72
80
  end
@@ -5,6 +5,10 @@ module Dodopayments
5
5
  module UnwrapWebhookEvent
6
6
  extend Dodopayments::Internal::Type::Union
7
7
 
8
+ variant -> { Dodopayments::AbandonedCheckoutDetectedWebhookEvent }
9
+
10
+ variant -> { Dodopayments::AbandonedCheckoutRecoveredWebhookEvent }
11
+
8
12
  variant -> { Dodopayments::CreditAddedWebhookEvent }
9
13
 
10
14
  variant -> { Dodopayments::CreditBalanceLowWebhookEvent }
@@ -35,6 +39,10 @@ module Dodopayments
35
39
 
36
40
  variant -> { Dodopayments::DisputeWonWebhookEvent }
37
41
 
42
+ variant -> { Dodopayments::DunningRecoveredWebhookEvent }
43
+
44
+ variant -> { Dodopayments::DunningStartedWebhookEvent }
45
+
38
46
  variant -> { Dodopayments::LicenseKeyCreatedWebhookEvent }
39
47
 
40
48
  variant -> { Dodopayments::PaymentCancelledWebhookEvent }
@@ -66,7 +74,7 @@ module Dodopayments
66
74
  variant -> { Dodopayments::SubscriptionUpdatedWebhookEvent }
67
75
 
68
76
  # @!method self.variants
69
- # @return [Array(Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
77
+ # @return [Array(Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent, Dodopayments::Models::CreditAddedWebhookEvent, Dodopayments::Models::CreditBalanceLowWebhookEvent, Dodopayments::Models::CreditDeductedWebhookEvent, Dodopayments::Models::CreditExpiredWebhookEvent, Dodopayments::Models::CreditManualAdjustmentWebhookEvent, Dodopayments::Models::CreditOverageChargedWebhookEvent, Dodopayments::Models::CreditRolledOverWebhookEvent, Dodopayments::Models::CreditRolloverForfeitedWebhookEvent, Dodopayments::Models::DisputeAcceptedWebhookEvent, Dodopayments::Models::DisputeCancelledWebhookEvent, Dodopayments::Models::DisputeChallengedWebhookEvent, Dodopayments::Models::DisputeExpiredWebhookEvent, Dodopayments::Models::DisputeLostWebhookEvent, Dodopayments::Models::DisputeOpenedWebhookEvent, Dodopayments::Models::DisputeWonWebhookEvent, Dodopayments::Models::DunningRecoveredWebhookEvent, Dodopayments::Models::DunningStartedWebhookEvent, Dodopayments::Models::LicenseKeyCreatedWebhookEvent, Dodopayments::Models::PaymentCancelledWebhookEvent, Dodopayments::Models::PaymentFailedWebhookEvent, Dodopayments::Models::PaymentProcessingWebhookEvent, Dodopayments::Models::PaymentSucceededWebhookEvent, Dodopayments::Models::RefundFailedWebhookEvent, Dodopayments::Models::RefundSucceededWebhookEvent, Dodopayments::Models::SubscriptionActiveWebhookEvent, Dodopayments::Models::SubscriptionCancelledWebhookEvent, Dodopayments::Models::SubscriptionExpiredWebhookEvent, Dodopayments::Models::SubscriptionFailedWebhookEvent, Dodopayments::Models::SubscriptionOnHoldWebhookEvent, Dodopayments::Models::SubscriptionPlanChangedWebhookEvent, Dodopayments::Models::SubscriptionRenewedWebhookEvent, Dodopayments::Models::SubscriptionUpdatedWebhookEvent)]
70
78
  end
71
79
  end
72
80
  end
@@ -41,6 +41,12 @@ module Dodopayments
41
41
  CREDIT_OVERAGE_CHARGED = :"credit.overage_charged"
42
42
  CREDIT_MANUAL_ADJUSTMENT = :"credit.manual_adjustment"
43
43
  CREDIT_BALANCE_LOW = :"credit.balance_low"
44
+ ABANDONED_CHECKOUT_DETECTED = :"abandoned_checkout.detected"
45
+ ABANDONED_CHECKOUT_RECOVERED = :"abandoned_checkout.recovered"
46
+ DUNNING_STARTED = :"dunning.started"
47
+ DUNNING_RECOVERED = :"dunning.recovered"
48
+ ACR_EMAIL = :"acr.email"
49
+ DUNNING_EMAIL = :"dunning.email"
44
50
 
45
51
  # @!method self.values
46
52
  # @return [Array<Symbol>]
@@ -11,7 +11,7 @@ module Dodopayments
11
11
  # @!attribute data
12
12
  # The latest data at the time of delivery attempt
13
13
  #
14
- # @return [Dodopayments::Models::WebhookPayload::Data::Payment, Dodopayments::Models::WebhookPayload::Data::Subscription, Dodopayments::Models::WebhookPayload::Data::Refund, Dodopayments::Models::WebhookPayload::Data::Dispute, Dodopayments::Models::WebhookPayload::Data::LicenseKey, Dodopayments::Models::WebhookPayload::Data::CreditLedgerEntry, Dodopayments::Models::WebhookPayload::Data::CreditBalanceLow]
14
+ # @return [Dodopayments::Models::WebhookPayload::Data::Payment, Dodopayments::Models::WebhookPayload::Data::Subscription, Dodopayments::Models::WebhookPayload::Data::Refund, Dodopayments::Models::WebhookPayload::Data::Dispute, Dodopayments::Models::WebhookPayload::Data::LicenseKey, Dodopayments::Models::WebhookPayload::Data::CreditLedgerEntry, Dodopayments::Models::WebhookPayload::Data::CreditBalanceLow, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout, Dodopayments::Models::WebhookPayload::Data::DunningAttempt]
15
15
  required :data, union: -> { Dodopayments::WebhookPayload::Data }
16
16
 
17
17
  # @!attribute timestamp
@@ -33,7 +33,7 @@ module Dodopayments
33
33
  #
34
34
  # @param business_id [String]
35
35
  #
36
- # @param data [Dodopayments::Models::WebhookPayload::Data::Payment, Dodopayments::Models::WebhookPayload::Data::Subscription, Dodopayments::Models::WebhookPayload::Data::Refund, Dodopayments::Models::WebhookPayload::Data::Dispute, Dodopayments::Models::WebhookPayload::Data::LicenseKey, Dodopayments::Models::WebhookPayload::Data::CreditLedgerEntry, Dodopayments::Models::WebhookPayload::Data::CreditBalanceLow] The latest data at the time of delivery attempt
36
+ # @param data [Dodopayments::Models::WebhookPayload::Data::Payment, Dodopayments::Models::WebhookPayload::Data::Subscription, Dodopayments::Models::WebhookPayload::Data::Refund, Dodopayments::Models::WebhookPayload::Data::Dispute, Dodopayments::Models::WebhookPayload::Data::LicenseKey, Dodopayments::Models::WebhookPayload::Data::CreditLedgerEntry, Dodopayments::Models::WebhookPayload::Data::CreditBalanceLow, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout, Dodopayments::Models::WebhookPayload::Data::DunningAttempt] The latest data at the time of delivery attempt
37
37
  #
38
38
  # @param timestamp [Time] The timestamp of when the event occurred (not necessarily the same of when it wa
39
39
  #
@@ -61,6 +61,10 @@ module Dodopayments
61
61
 
62
62
  variant -> { Dodopayments::WebhookPayload::Data::CreditBalanceLow }
63
63
 
64
+ variant -> { Dodopayments::WebhookPayload::Data::AbandonedCheckout }
65
+
66
+ variant -> { Dodopayments::WebhookPayload::Data::DunningAttempt }
67
+
64
68
  class Payment < Dodopayments::Models::Payment
65
69
  # @!attribute payload_type
66
70
  #
@@ -247,8 +251,169 @@ module Dodopayments
247
251
  end
248
252
  end
249
253
 
254
+ class AbandonedCheckout < Dodopayments::Internal::Type::BaseModel
255
+ # @!attribute abandoned_at
256
+ #
257
+ # @return [Time]
258
+ required :abandoned_at, Time
259
+
260
+ # @!attribute abandonment_reason
261
+ #
262
+ # @return [Symbol, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason]
263
+ required :abandonment_reason,
264
+ enum: -> { Dodopayments::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason }
265
+
266
+ # @!attribute customer_id
267
+ #
268
+ # @return [String]
269
+ required :customer_id, String
270
+
271
+ # @!attribute payload_type
272
+ #
273
+ # @return [Symbol, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout::PayloadType]
274
+ required :payload_type, enum: -> { Dodopayments::WebhookPayload::Data::AbandonedCheckout::PayloadType }
275
+
276
+ # @!attribute payment_id
277
+ #
278
+ # @return [String]
279
+ required :payment_id, String
280
+
281
+ # @!attribute status
282
+ #
283
+ # @return [Symbol, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout::Status]
284
+ required :status, enum: -> { Dodopayments::WebhookPayload::Data::AbandonedCheckout::Status }
285
+
286
+ # @!attribute recovered_payment_id
287
+ #
288
+ # @return [String, nil]
289
+ optional :recovered_payment_id, String, nil?: true
290
+
291
+ # @!method initialize(abandoned_at:, abandonment_reason:, customer_id:, payload_type:, payment_id:, status:, recovered_payment_id: nil)
292
+ # @param abandoned_at [Time]
293
+ # @param abandonment_reason [Symbol, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout::AbandonmentReason]
294
+ # @param customer_id [String]
295
+ # @param payload_type [Symbol, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout::PayloadType]
296
+ # @param payment_id [String]
297
+ # @param status [Symbol, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout::Status]
298
+ # @param recovered_payment_id [String, nil]
299
+
300
+ # @see Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout#abandonment_reason
301
+ module AbandonmentReason
302
+ extend Dodopayments::Internal::Type::Enum
303
+
304
+ PAYMENT_FAILED = :payment_failed
305
+ CHECKOUT_INCOMPLETE = :checkout_incomplete
306
+
307
+ # @!method self.values
308
+ # @return [Array<Symbol>]
309
+ end
310
+
311
+ # @see Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout#payload_type
312
+ module PayloadType
313
+ extend Dodopayments::Internal::Type::Enum
314
+
315
+ ABANDONED_CHECKOUT = :AbandonedCheckout
316
+
317
+ # @!method self.values
318
+ # @return [Array<Symbol>]
319
+ end
320
+
321
+ # @see Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout#status
322
+ module Status
323
+ extend Dodopayments::Internal::Type::Enum
324
+
325
+ ABANDONED = :abandoned
326
+ RECOVERING = :recovering
327
+ RECOVERED = :recovered
328
+ EXHAUSTED = :exhausted
329
+ OPTED_OUT = :opted_out
330
+
331
+ # @!method self.values
332
+ # @return [Array<Symbol>]
333
+ end
334
+ end
335
+
336
+ class DunningAttempt < Dodopayments::Internal::Type::BaseModel
337
+ # @!attribute created_at
338
+ #
339
+ # @return [Time]
340
+ required :created_at, Time
341
+
342
+ # @!attribute customer_id
343
+ #
344
+ # @return [String]
345
+ required :customer_id, String
346
+
347
+ # @!attribute payload_type
348
+ #
349
+ # @return [Symbol, Dodopayments::Models::WebhookPayload::Data::DunningAttempt::PayloadType]
350
+ required :payload_type, enum: -> { Dodopayments::WebhookPayload::Data::DunningAttempt::PayloadType }
351
+
352
+ # @!attribute status
353
+ #
354
+ # @return [Symbol, Dodopayments::Models::WebhookPayload::Data::DunningAttempt::Status]
355
+ required :status, enum: -> { Dodopayments::WebhookPayload::Data::DunningAttempt::Status }
356
+
357
+ # @!attribute subscription_id
358
+ #
359
+ # @return [String]
360
+ required :subscription_id, String
361
+
362
+ # @!attribute trigger_state
363
+ #
364
+ # @return [Symbol, Dodopayments::Models::WebhookPayload::Data::DunningAttempt::TriggerState]
365
+ required :trigger_state, enum: -> { Dodopayments::WebhookPayload::Data::DunningAttempt::TriggerState }
366
+
367
+ # @!attribute payment_id
368
+ #
369
+ # @return [String, nil]
370
+ optional :payment_id, String, nil?: true
371
+
372
+ # @!method initialize(created_at:, customer_id:, payload_type:, status:, subscription_id:, trigger_state:, payment_id: nil)
373
+ # @param created_at [Time]
374
+ # @param customer_id [String]
375
+ # @param payload_type [Symbol, Dodopayments::Models::WebhookPayload::Data::DunningAttempt::PayloadType]
376
+ # @param status [Symbol, Dodopayments::Models::WebhookPayload::Data::DunningAttempt::Status]
377
+ # @param subscription_id [String]
378
+ # @param trigger_state [Symbol, Dodopayments::Models::WebhookPayload::Data::DunningAttempt::TriggerState]
379
+ # @param payment_id [String, nil]
380
+
381
+ # @see Dodopayments::Models::WebhookPayload::Data::DunningAttempt#payload_type
382
+ module PayloadType
383
+ extend Dodopayments::Internal::Type::Enum
384
+
385
+ DUNNING_ATTEMPT = :DunningAttempt
386
+
387
+ # @!method self.values
388
+ # @return [Array<Symbol>]
389
+ end
390
+
391
+ # @see Dodopayments::Models::WebhookPayload::Data::DunningAttempt#status
392
+ module Status
393
+ extend Dodopayments::Internal::Type::Enum
394
+
395
+ RECOVERING = :recovering
396
+ RECOVERED = :recovered
397
+ EXHAUSTED = :exhausted
398
+
399
+ # @!method self.values
400
+ # @return [Array<Symbol>]
401
+ end
402
+
403
+ # @see Dodopayments::Models::WebhookPayload::Data::DunningAttempt#trigger_state
404
+ module TriggerState
405
+ extend Dodopayments::Internal::Type::Enum
406
+
407
+ ON_HOLD = :on_hold
408
+ CANCELLED = :cancelled
409
+
410
+ # @!method self.values
411
+ # @return [Array<Symbol>]
412
+ end
413
+ end
414
+
250
415
  # @!method self.variants
251
- # @return [Array(Dodopayments::Models::WebhookPayload::Data::Payment, Dodopayments::Models::WebhookPayload::Data::Subscription, Dodopayments::Models::WebhookPayload::Data::Refund, Dodopayments::Models::WebhookPayload::Data::Dispute, Dodopayments::Models::WebhookPayload::Data::LicenseKey, Dodopayments::Models::WebhookPayload::Data::CreditLedgerEntry, Dodopayments::Models::WebhookPayload::Data::CreditBalanceLow)]
416
+ # @return [Array(Dodopayments::Models::WebhookPayload::Data::Payment, Dodopayments::Models::WebhookPayload::Data::Subscription, Dodopayments::Models::WebhookPayload::Data::Refund, Dodopayments::Models::WebhookPayload::Data::Dispute, Dodopayments::Models::WebhookPayload::Data::LicenseKey, Dodopayments::Models::WebhookPayload::Data::CreditLedgerEntry, Dodopayments::Models::WebhookPayload::Data::CreditBalanceLow, Dodopayments::Models::WebhookPayload::Data::AbandonedCheckout, Dodopayments::Models::WebhookPayload::Data::DunningAttempt)]
252
417
  end
253
418
  end
254
419
  end
@@ -39,6 +39,10 @@ module Dodopayments
39
39
  mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
40
40
  end
41
41
 
42
+ AbandonedCheckoutDetectedWebhookEvent = Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent
43
+
44
+ AbandonedCheckoutRecoveredWebhookEvent = Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent
45
+
42
46
  AddMeterToPrice = Dodopayments::Models::AddMeterToPrice
43
47
 
44
48
  AddonCartResponseItem = Dodopayments::Models::AddonCartResponseItem
@@ -217,6 +221,10 @@ module Dodopayments
217
221
 
218
222
  DisputeWonWebhookEvent = Dodopayments::Models::DisputeWonWebhookEvent
219
223
 
224
+ DunningRecoveredWebhookEvent = Dodopayments::Models::DunningRecoveredWebhookEvent
225
+
226
+ DunningStartedWebhookEvent = Dodopayments::Models::DunningStartedWebhookEvent
227
+
220
228
  Event = Dodopayments::Models::Event
221
229
 
222
230
  EventInput = Dodopayments::Models::EventInput
@@ -309,6 +317,8 @@ module Dodopayments
309
317
 
310
318
  PayoutListParams = Dodopayments::Models::PayoutListParams
311
319
 
320
+ Payouts = Dodopayments::Models::Payouts
321
+
312
322
  Price = Dodopayments::Models::Price
313
323
 
314
324
  Product = Dodopayments::Models::Product
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Resources
5
+ class Payouts
6
+ class Breakup
7
+ class Details
8
+ # Returns paginated individual balance ledger entries for a payout, with each
9
+ # entry's amount pro-rated into the payout's currency. Supports pagination via
10
+ # `page_size` (default 10, max 100) and `page_number` (default 0) query
11
+ # parameters.
12
+ #
13
+ # @overload list(payout_id, page_number: nil, page_size: nil, request_options: {})
14
+ #
15
+ # @param payout_id [String] Id of the Payout to get breakup for
16
+ #
17
+ # @param page_number [Integer] Page number (0-indexed). Default: 0.
18
+ #
19
+ # @param page_size [Integer] Number of items per page. Default: 10, Max: 100.
20
+ #
21
+ # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}, nil]
22
+ #
23
+ # @return [Dodopayments::Internal::DefaultPageNumberPagination<Dodopayments::Models::Payouts::Breakup::DetailListResponse>]
24
+ #
25
+ # @see Dodopayments::Models::Payouts::Breakup::DetailListParams
26
+ def list(payout_id, params = {})
27
+ parsed, options = Dodopayments::Payouts::Breakup::DetailListParams.dump_request(params)
28
+ query = Dodopayments::Internal::Util.encode_query_params(parsed)
29
+ @client.request(
30
+ method: :get,
31
+ path: ["payouts/%1$s/breakup/details", payout_id],
32
+ query: query,
33
+ page: Dodopayments::Internal::DefaultPageNumberPagination,
34
+ model: Dodopayments::Models::Payouts::Breakup::DetailListResponse,
35
+ options: options
36
+ )
37
+ end
38
+
39
+ # Downloads the complete payout breakup as a CSV file. Each row represents a
40
+ # balance ledger entry with columns: Ledger ID, Event Type, Original Amount,
41
+ # Original Currency, Reference Object ID, Description, Created At, USD Equivalent
42
+ # Amount, and Payout Currency Amount.
43
+ #
44
+ # @overload download_csv(payout_id, request_options: {})
45
+ #
46
+ # @param payout_id [String] Id of the Payout to get breakup for
47
+ #
48
+ # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}, nil]
49
+ #
50
+ # @return [nil]
51
+ #
52
+ # @see Dodopayments::Models::Payouts::Breakup::DetailDownloadCsvParams
53
+ def download_csv(payout_id, params = {})
54
+ @client.request(
55
+ method: :get,
56
+ path: ["payouts/%1$s/breakup/details/csv", payout_id],
57
+ model: NilClass,
58
+ options: params[:request_options]
59
+ )
60
+ end
61
+
62
+ # @api private
63
+ #
64
+ # @param client [Dodopayments::Client]
65
+ def initialize(client:)
66
+ @client = client
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Resources
5
+ class Payouts
6
+ class Breakup
7
+ # @return [Dodopayments::Resources::Payouts::Breakup::Details]
8
+ attr_reader :details
9
+
10
+ # Returns the breakdown of a payout by event type (payments, refunds, disputes,
11
+ # fees, etc.) in the payout's currency. Each amount is proportionally allocated
12
+ # based on USD equivalent values, ensuring the total sums exactly to the payout
13
+ # amount.
14
+ #
15
+ # @overload retrieve(payout_id, request_options: {})
16
+ #
17
+ # @param payout_id [String] Id of the Payout to get breakup for
18
+ #
19
+ # @param request_options [Dodopayments::RequestOptions, Hash{Symbol=>Object}, nil]
20
+ #
21
+ # @return [Array<Dodopayments::Models::Payouts::BreakupRetrieveResponseItem>]
22
+ #
23
+ # @see Dodopayments::Models::Payouts::BreakupRetrieveParams
24
+ def retrieve(payout_id, params = {})
25
+ @client.request(
26
+ method: :get,
27
+ path: ["payouts/%1$s/breakup", payout_id],
28
+ model: Dodopayments::Internal::Type::ArrayOf[Dodopayments::Models::Payouts::BreakupRetrieveResponseItem],
29
+ options: params[:request_options]
30
+ )
31
+ end
32
+
33
+ # @api private
34
+ #
35
+ # @param client [Dodopayments::Client]
36
+ def initialize(client:)
37
+ @client = client
38
+ @details = Dodopayments::Resources::Payouts::Breakup::Details.new(client: client)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -3,6 +3,9 @@
3
3
  module Dodopayments
4
4
  module Resources
5
5
  class Payouts
6
+ # @return [Dodopayments::Resources::Payouts::Breakup]
7
+ attr_reader :breakup
8
+
6
9
  # @overload list(created_at_gte: nil, created_at_lte: nil, page_number: nil, page_size: nil, request_options: {})
7
10
  #
8
11
  # @param created_at_gte [Time] Get payouts created after this time (inclusive)
@@ -36,6 +39,7 @@ module Dodopayments
36
39
  # @param client [Dodopayments::Client]
37
40
  def initialize(client:)
38
41
  @client = client
42
+ @breakup = Dodopayments::Resources::Payouts::Breakup.new(client: client)
39
43
  end
40
44
  end
41
45
  end
@@ -84,7 +84,7 @@ module Dodopayments
84
84
  )
85
85
  end
86
86
 
87
- # @overload update(subscription_id, billing: nil, cancel_at_next_billing_date: nil, credit_entitlement_cart: nil, customer_name: nil, disable_on_demand: nil, metadata: nil, next_billing_date: nil, status: nil, tax_id: nil, request_options: {})
87
+ # @overload update(subscription_id, billing: nil, cancel_at_next_billing_date: nil, cancel_reason: nil, credit_entitlement_cart: nil, customer_name: nil, disable_on_demand: nil, metadata: nil, next_billing_date: nil, status: nil, tax_id: nil, request_options: {})
88
88
  #
89
89
  # @param subscription_id [String] Subscription Id
90
90
  #
@@ -92,6 +92,8 @@ module Dodopayments
92
92
  #
93
93
  # @param cancel_at_next_billing_date [Boolean, nil] When set, the subscription will remain active until the end of billing period
94
94
  #
95
+ # @param cancel_reason [Symbol, Dodopayments::Models::SubscriptionUpdateParams::CancelReason, nil]
96
+ #
95
97
  # @param credit_entitlement_cart [Array<Dodopayments::Models::SubscriptionUpdateParams::CreditEntitlementCart>, nil] Update credit entitlement cart settings
96
98
  #
97
99
  # @param customer_name [String, nil]