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
@@ -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
@@ -9,7 +9,7 @@ module Dodopayments
9
9
  # POST /discounts If `code` is omitted or empty, a random 16-char uppercase code
10
10
  # is generated.
11
11
  #
12
- # @overload create(amount:, type:, code: nil, expires_at: nil, name: nil, preserve_on_plan_change: nil, restricted_to: nil, subscription_cycles: nil, usage_limit: nil, request_options: {})
12
+ # @overload create(amount:, type:, code: nil, expires_at: nil, metadata: nil, name: nil, preserve_on_plan_change: nil, restricted_to: nil, subscription_cycles: nil, usage_limit: nil, request_options: {})
13
13
  #
14
14
  # @param amount [Integer] The discount amount.
15
15
  #
@@ -19,6 +19,8 @@ module Dodopayments
19
19
  #
20
20
  # @param expires_at [Time, nil] When the discount expires, if ever.
21
21
  #
22
+ # @param metadata [Hash{Symbol=>String}] Additional metadata for the discount
23
+ #
22
24
  # @param name [String, nil]
23
25
  #
24
26
  # @param preserve_on_plan_change [Boolean] Whether this discount should be preserved when a subscription changes plans.
@@ -70,7 +72,7 @@ module Dodopayments
70
72
  #
71
73
  # PATCH /discounts/{discount_id}
72
74
  #
73
- # @overload update(discount_id, amount: nil, code: nil, expires_at: nil, name: nil, preserve_on_plan_change: nil, restricted_to: nil, subscription_cycles: nil, type: nil, usage_limit: nil, request_options: {})
75
+ # @overload update(discount_id, amount: nil, code: nil, expires_at: nil, metadata: nil, name: nil, preserve_on_plan_change: nil, restricted_to: nil, subscription_cycles: nil, type: nil, usage_limit: nil, request_options: {})
74
76
  #
75
77
  # @param discount_id [String] Discount Id
76
78
  #
@@ -80,6 +82,8 @@ module Dodopayments
80
82
  #
81
83
  # @param expires_at [Time, nil]
82
84
  #
85
+ # @param metadata [Hash{Symbol=>String}, nil] Additional metadata for the discount
86
+ #
83
87
  # @param name [String, nil]
84
88
  #
85
89
  # @param preserve_on_plan_change [Boolean, nil] Whether this discount should be preserved when a subscription changes plans.
@@ -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]
@@ -167,7 +167,7 @@ module Dodopayments
167
167
 
168
168
  # @param payload [String] The raw webhook payload as a string
169
169
  #
170
- # @return [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]
170
+ # @return [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]
171
171
  def unsafe_unwrap(payload)
172
172
  parsed = JSON.parse(payload, symbolize_names: true)
173
173
  Dodopayments::Internal::Type::Converter.coerce(Dodopayments::Models::UnsafeUnwrapWebhookEvent, parsed)
@@ -179,7 +179,7 @@ module Dodopayments
179
179
  #
180
180
  # @param key [String, nil] The webhook signing key
181
181
  #
182
- # @return [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]
182
+ # @return [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]
183
183
  def unwrap(payload, headers:, key: @client.webhook_key)
184
184
  if key.nil?
185
185
  raise ArgumentError.new("Cannot verify a webhook without a key on either the client's webhook_key or passed in as an argument")
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dodopayments
4
- VERSION = "2.4.1"
4
+ VERSION = "2.6.0"
5
5
  end
data/lib/dodopayments.rb CHANGED
@@ -63,6 +63,8 @@ require_relative "dodopayments/models/get_dispute"
63
63
  require_relative "dodopayments/models/refund"
64
64
  require_relative "dodopayments/models/subscription"
65
65
  require_relative "dodopayments/models/payment"
66
+ require_relative "dodopayments/models/abandoned_checkout_detected_webhook_event"
67
+ require_relative "dodopayments/models/abandoned_checkout_recovered_webhook_event"
66
68
  require_relative "dodopayments/models/add_meter_to_price"
67
69
  require_relative "dodopayments/models/addon_cart_response_item"
68
70
  require_relative "dodopayments/models/addon_create_params"
@@ -172,6 +174,8 @@ require_relative "dodopayments/models/dispute_retrieve_params"
172
174
  require_relative "dodopayments/models/dispute_stage"
173
175
  require_relative "dodopayments/models/dispute_status"
174
176
  require_relative "dodopayments/models/dispute_won_webhook_event"
177
+ require_relative "dodopayments/models/dunning_recovered_webhook_event"
178
+ require_relative "dodopayments/models/dunning_started_webhook_event"
175
179
  require_relative "dodopayments/models/event"
176
180
  require_relative "dodopayments/models/event_input"
177
181
  require_relative "dodopayments/models/filter_operator"
@@ -223,6 +227,11 @@ require_relative "dodopayments/models/payment_retrieve_params"
223
227
  require_relative "dodopayments/models/payment_succeeded_webhook_event"
224
228
  require_relative "dodopayments/models/payout_list_params"
225
229
  require_relative "dodopayments/models/payout_list_response"
230
+ require_relative "dodopayments/models/payouts/breakup/detail_download_csv_params"
231
+ require_relative "dodopayments/models/payouts/breakup/detail_list_params"
232
+ require_relative "dodopayments/models/payouts/breakup/detail_list_response"
233
+ require_relative "dodopayments/models/payouts/breakup_retrieve_params"
234
+ require_relative "dodopayments/models/payouts/breakup_retrieve_response"
226
235
  require_relative "dodopayments/models/price"
227
236
  require_relative "dodopayments/models/product"
228
237
  require_relative "dodopayments/models/product_archive_params"
@@ -323,6 +332,8 @@ require_relative "dodopayments/resources/meters"
323
332
  require_relative "dodopayments/resources/misc"
324
333
  require_relative "dodopayments/resources/payments"
325
334
  require_relative "dodopayments/resources/payouts"
335
+ require_relative "dodopayments/resources/payouts/breakup"
336
+ require_relative "dodopayments/resources/payouts/breakup/details"
326
337
  require_relative "dodopayments/resources/products"
327
338
  require_relative "dodopayments/resources/products/images"
328
339
  require_relative "dodopayments/resources/products/short_links"
@@ -148,12 +148,20 @@ module Dodopayments
148
148
  end
149
149
  end
150
150
 
151
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
152
+ RFC_3986_NOT_PCHARS = T.let(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/, Regexp)
153
+
151
154
  class << self
152
155
  # @api private
153
156
  sig { params(uri: URI::Generic).returns(String) }
154
157
  def uri_origin(uri)
155
158
  end
156
159
 
160
+ # @api private
161
+ sig { params(path: T.any(String, Integer)).returns(String) }
162
+ def encode_path(path)
163
+ end
164
+
157
165
  # @api private
158
166
  sig { params(path: T.any(String, T::Array[String])).returns(String) }
159
167
  def interpolate_path(path)
@@ -0,0 +1,271 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class AbandonedCheckoutDetectedWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent,
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 { returns(Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data) }
21
+ attr_reader :data
22
+
23
+ sig do
24
+ params(
25
+ data:
26
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::OrHash
27
+ ).void
28
+ end
29
+ attr_writer :data
30
+
31
+ # The timestamp of when the event occurred
32
+ sig { returns(Time) }
33
+ attr_accessor :timestamp
34
+
35
+ # The event type
36
+ sig do
37
+ returns(
38
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Type::TaggedSymbol
39
+ )
40
+ end
41
+ attr_accessor :type
42
+
43
+ sig do
44
+ params(
45
+ business_id: String,
46
+ data:
47
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::OrHash,
48
+ timestamp: Time,
49
+ type:
50
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Type::OrSymbol
51
+ ).returns(T.attached_class)
52
+ end
53
+ def self.new(
54
+ # The business identifier
55
+ business_id:,
56
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
57
+ # events
58
+ data:,
59
+ # The timestamp of when the event occurred
60
+ timestamp:,
61
+ # The event type
62
+ type:
63
+ )
64
+ end
65
+
66
+ sig do
67
+ override.returns(
68
+ {
69
+ business_id: String,
70
+ data: Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data,
71
+ timestamp: Time,
72
+ type:
73
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Type::TaggedSymbol
74
+ }
75
+ )
76
+ end
77
+ def to_hash
78
+ end
79
+
80
+ class Data < Dodopayments::Internal::Type::BaseModel
81
+ OrHash =
82
+ T.type_alias do
83
+ T.any(
84
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data,
85
+ Dodopayments::Internal::AnyHash
86
+ )
87
+ end
88
+
89
+ sig { returns(Time) }
90
+ attr_accessor :abandoned_at
91
+
92
+ sig do
93
+ returns(
94
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason::TaggedSymbol
95
+ )
96
+ end
97
+ attr_accessor :abandonment_reason
98
+
99
+ sig { returns(String) }
100
+ attr_accessor :customer_id
101
+
102
+ sig { returns(String) }
103
+ attr_accessor :payment_id
104
+
105
+ sig do
106
+ returns(
107
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::TaggedSymbol
108
+ )
109
+ end
110
+ attr_accessor :status
111
+
112
+ sig { returns(T.nilable(String)) }
113
+ attr_accessor :recovered_payment_id
114
+
115
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
116
+ # events
117
+ sig do
118
+ params(
119
+ abandoned_at: Time,
120
+ abandonment_reason:
121
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason::OrSymbol,
122
+ customer_id: String,
123
+ payment_id: String,
124
+ status:
125
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::OrSymbol,
126
+ recovered_payment_id: T.nilable(String)
127
+ ).returns(T.attached_class)
128
+ end
129
+ def self.new(
130
+ abandoned_at:,
131
+ abandonment_reason:,
132
+ customer_id:,
133
+ payment_id:,
134
+ status:,
135
+ recovered_payment_id: nil
136
+ )
137
+ end
138
+
139
+ sig do
140
+ override.returns(
141
+ {
142
+ abandoned_at: Time,
143
+ abandonment_reason:
144
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason::TaggedSymbol,
145
+ customer_id: String,
146
+ payment_id: String,
147
+ status:
148
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::TaggedSymbol,
149
+ recovered_payment_id: T.nilable(String)
150
+ }
151
+ )
152
+ end
153
+ def to_hash
154
+ end
155
+
156
+ module AbandonmentReason
157
+ extend Dodopayments::Internal::Type::Enum
158
+
159
+ TaggedSymbol =
160
+ T.type_alias do
161
+ T.all(
162
+ Symbol,
163
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason
164
+ )
165
+ end
166
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
167
+
168
+ PAYMENT_FAILED =
169
+ T.let(
170
+ :payment_failed,
171
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason::TaggedSymbol
172
+ )
173
+ CHECKOUT_INCOMPLETE =
174
+ T.let(
175
+ :checkout_incomplete,
176
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason::TaggedSymbol
177
+ )
178
+
179
+ sig do
180
+ override.returns(
181
+ T::Array[
182
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason::TaggedSymbol
183
+ ]
184
+ )
185
+ end
186
+ def self.values
187
+ end
188
+ end
189
+
190
+ module Status
191
+ extend Dodopayments::Internal::Type::Enum
192
+
193
+ TaggedSymbol =
194
+ T.type_alias do
195
+ T.all(
196
+ Symbol,
197
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status
198
+ )
199
+ end
200
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
201
+
202
+ ABANDONED =
203
+ T.let(
204
+ :abandoned,
205
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::TaggedSymbol
206
+ )
207
+ RECOVERING =
208
+ T.let(
209
+ :recovering,
210
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::TaggedSymbol
211
+ )
212
+ RECOVERED =
213
+ T.let(
214
+ :recovered,
215
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::TaggedSymbol
216
+ )
217
+ EXHAUSTED =
218
+ T.let(
219
+ :exhausted,
220
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::TaggedSymbol
221
+ )
222
+ OPTED_OUT =
223
+ T.let(
224
+ :opted_out,
225
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::TaggedSymbol
226
+ )
227
+
228
+ sig do
229
+ override.returns(
230
+ T::Array[
231
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status::TaggedSymbol
232
+ ]
233
+ )
234
+ end
235
+ def self.values
236
+ end
237
+ end
238
+ end
239
+
240
+ # The event type
241
+ module Type
242
+ extend Dodopayments::Internal::Type::Enum
243
+
244
+ TaggedSymbol =
245
+ T.type_alias do
246
+ T.all(
247
+ Symbol,
248
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Type
249
+ )
250
+ end
251
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
252
+
253
+ ABANDONED_CHECKOUT_DETECTED =
254
+ T.let(
255
+ :"abandoned_checkout.detected",
256
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Type::TaggedSymbol
257
+ )
258
+
259
+ sig do
260
+ override.returns(
261
+ T::Array[
262
+ Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Type::TaggedSymbol
263
+ ]
264
+ )
265
+ end
266
+ def self.values
267
+ end
268
+ end
269
+ end
270
+ end
271
+ end