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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec47e5ed5d7a92edd6f7f61c24562362099dd5980fa2c2dc2293003799f91d59
4
- data.tar.gz: 112e0708dc5ff423e0e9b46c74476bf2d030a98f67faae94e2b62a7304e3f0e7
3
+ metadata.gz: d32cb5b0b3bc5c595dc555bf1c7d347501bb80217035f32f108f2726b5b67aa9
4
+ data.tar.gz: 7d6a36da0c5d1d13efcf9fb8b923890c1b5c7cf99c912d3b97d0fceb70c355ad
5
5
  SHA512:
6
- metadata.gz: 392377d8410ada093c499f134ee47fd7b847066bf7b945754ef058620080c97ebceff5dedfc4fb2ecfa914831dd34b1c51f7d264993cf32c9590be628268a534
7
- data.tar.gz: 9b7cd6bfbae18f7963bda587ceae29ac0459f150b97a5160ddfcf9a8eba9bf5643cbe55483aaa471d42c2b69aa7ec82881b887140c53fad58f9aa34f818b321b
6
+ metadata.gz: 42ed38d3f7a3aa883ef873b5646407b85adc97c08b56d0216e1f04f0a04d6ea20b5b8fc3fbf2290e14fa30027f939f923fa3abfe22d80244f5f3ec59a1d66222
7
+ data.tar.gz: 6f53f029c8506e8fdeda4989daa2bff8e8c646b16d7ea1568813d779c3eac36ddbf0727fe60233916cdb41a9058da97c065c867707ae5124c28680b43c121671
data/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.6.0 (2026-04-08)
4
+
5
+ Full Changelog: [v2.5.0...v2.6.0](https://github.com/dodopayments/dodopayments-ruby/compare/v2.5.0...v2.6.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** updated openapi spec to v1.94.2 ([6cad8c2](https://github.com/dodopayments/dodopayments-ruby/commit/6cad8c211713ce096110682f4af14b3b82fa3b6d))
10
+
11
+ ## 2.5.0 (2026-04-01)
12
+
13
+ Full Changelog: [v2.4.1...v2.5.0](https://github.com/dodopayments/dodopayments-ruby/compare/v2.4.1...v2.5.0)
14
+
15
+ ### Features
16
+
17
+ * **api:** updated openapi spec to v1.93.0 ([108653e](https://github.com/dodopayments/dodopayments-ruby/commit/108653eb281d4b33283a7bc9bcaa7ce8434b077b))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * align path encoding with RFC 3986 section 3.3 ([c77867d](https://github.com/dodopayments/dodopayments-ruby/commit/c77867d2f7a352bc7f6ede137e629fa0d6a37808))
23
+ * variable name typo ([93ee38e](https://github.com/dodopayments/dodopayments-ruby/commit/93ee38e03c625a03d6c716c93bae44bdd9682272))
24
+
25
+
26
+ ### Chores
27
+
28
+ * **ci:** support opting out of skipping builds on metadata-only commits ([440f676](https://github.com/dodopayments/dodopayments-ruby/commit/440f6769cfae73ecd8414c50f35d724ca6c84ce0))
29
+ * **tests:** bump steady to v0.20.1 ([c0ca147](https://github.com/dodopayments/dodopayments-ruby/commit/c0ca147e996ceec20c39b2076153c6084048f9e6))
30
+ * **tests:** bump steady to v0.20.2 ([5d83036](https://github.com/dodopayments/dodopayments-ruby/commit/5d830369abcabf01109bdb3e9c21ea3c2aed894b))
31
+
3
32
  ## 2.4.1 (2026-03-27)
4
33
 
5
34
  Full Changelog: [v2.4.0...v2.4.1](https://github.com/dodopayments/dodopayments-ruby/compare/v2.4.0...v2.4.1)
data/README.md CHANGED
@@ -26,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
26
26
  <!-- x-release-please-start-version -->
27
27
 
28
28
  ```ruby
29
- gem "dodopayments", "~> 2.4.1"
29
+ gem "dodopayments", "~> 2.6.0"
30
30
  ```
31
31
 
32
32
  <!-- x-release-please-end -->
@@ -157,7 +157,7 @@ module Dodopayments
157
157
  in Hash | nil => coerced
158
158
  coerced
159
159
  else
160
- message = "Expected a #{Hash} or #{Dodopayments::Internal::Type::BaseModel}, got #{data.inspect}"
160
+ message = "Expected a #{Hash} or #{Dodopayments::Internal::Type::BaseModel}, got #{input.inspect}"
161
161
  raise ArgumentError.new(message)
162
162
  end
163
163
  end
@@ -237,6 +237,11 @@ module Dodopayments
237
237
  end
238
238
  end
239
239
 
240
+ # @type [Regexp]
241
+ #
242
+ # https://www.rfc-editor.org/rfc/rfc3986.html#section-3.3
243
+ RFC_3986_NOT_PCHARS = /[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/
244
+
240
245
  class << self
241
246
  # @api private
242
247
  #
@@ -247,6 +252,15 @@ module Dodopayments
247
252
  "#{uri.scheme}://#{uri.host}#{":#{uri.port}" unless uri.port == uri.default_port}"
248
253
  end
249
254
 
255
+ # @api private
256
+ #
257
+ # @param path [String, Integer]
258
+ #
259
+ # @return [String]
260
+ def encode_path(path)
261
+ path.to_s.gsub(Dodopayments::Internal::Util::RFC_3986_NOT_PCHARS) { ERB::Util.url_encode(_1) }
262
+ end
263
+
250
264
  # @api private
251
265
  #
252
266
  # @param path [String, Array<String>]
@@ -259,7 +273,7 @@ module Dodopayments
259
273
  in []
260
274
  ""
261
275
  in [String => p, *interpolations]
262
- encoded = interpolations.map { ERB::Util.url_encode(_1) }
276
+ encoded = interpolations.map { encode_path(_1) }
263
277
  format(p, *encoded)
264
278
  end
265
279
  end
@@ -576,10 +590,10 @@ module Dodopayments
576
590
 
577
591
  case val
578
592
  in Dodopayments::FilePart unless val.filename.nil?
579
- filename = ERB::Util.url_encode(val.filename)
593
+ filename = encode_path(val.filename)
580
594
  y << "; filename=\"#{filename}\""
581
595
  in Pathname | IO
582
- filename = ERB::Util.url_encode(::File.basename(val.to_path))
596
+ filename = encode_path(::File.basename(val.to_path))
583
597
  y << "; filename=\"#{filename}\""
584
598
  else
585
599
  end
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class AbandonedCheckoutDetectedWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ # @!attribute business_id
7
+ # The business identifier
8
+ #
9
+ # @return [String]
10
+ required :business_id, String
11
+
12
+ # @!attribute data
13
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
14
+ # events
15
+ #
16
+ # @return [Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Data]
17
+ required :data, -> { Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data }
18
+
19
+ # @!attribute timestamp
20
+ # The timestamp of when the event occurred
21
+ #
22
+ # @return [Time]
23
+ required :timestamp, Time
24
+
25
+ # @!attribute type
26
+ # The event type
27
+ #
28
+ # @return [Symbol, Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Type]
29
+ required :type, enum: -> { Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Type }
30
+
31
+ # @!method initialize(business_id:, data:, timestamp:, type:)
32
+ # Some parameter documentations has been truncated, see
33
+ # {Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent} for more details.
34
+ #
35
+ # @param business_id [String] The business identifier
36
+ #
37
+ # @param data [Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Data] Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
38
+ #
39
+ # @param timestamp [Time] The timestamp of when the event occurred
40
+ #
41
+ # @param type [Symbol, Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Type] The event type
42
+
43
+ # @see Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent#data
44
+ class Data < Dodopayments::Internal::Type::BaseModel
45
+ # @!attribute abandoned_at
46
+ #
47
+ # @return [Time]
48
+ required :abandoned_at, Time
49
+
50
+ # @!attribute abandonment_reason
51
+ #
52
+ # @return [Symbol, Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason]
53
+ required :abandonment_reason,
54
+ enum: -> { Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason }
55
+
56
+ # @!attribute customer_id
57
+ #
58
+ # @return [String]
59
+ required :customer_id, String
60
+
61
+ # @!attribute payment_id
62
+ #
63
+ # @return [String]
64
+ required :payment_id, String
65
+
66
+ # @!attribute status
67
+ #
68
+ # @return [Symbol, Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Data::Status]
69
+ required :status, enum: -> { Dodopayments::AbandonedCheckoutDetectedWebhookEvent::Data::Status }
70
+
71
+ # @!attribute recovered_payment_id
72
+ #
73
+ # @return [String, nil]
74
+ optional :recovered_payment_id, String, nil?: true
75
+
76
+ # @!method initialize(abandoned_at:, abandonment_reason:, customer_id:, payment_id:, status:, recovered_payment_id: nil)
77
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
78
+ # events
79
+ #
80
+ # @param abandoned_at [Time]
81
+ # @param abandonment_reason [Symbol, Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Data::AbandonmentReason]
82
+ # @param customer_id [String]
83
+ # @param payment_id [String]
84
+ # @param status [Symbol, Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Data::Status]
85
+ # @param recovered_payment_id [String, nil]
86
+
87
+ # @see Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Data#abandonment_reason
88
+ module AbandonmentReason
89
+ extend Dodopayments::Internal::Type::Enum
90
+
91
+ PAYMENT_FAILED = :payment_failed
92
+ CHECKOUT_INCOMPLETE = :checkout_incomplete
93
+
94
+ # @!method self.values
95
+ # @return [Array<Symbol>]
96
+ end
97
+
98
+ # @see Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent::Data#status
99
+ module Status
100
+ extend Dodopayments::Internal::Type::Enum
101
+
102
+ ABANDONED = :abandoned
103
+ RECOVERING = :recovering
104
+ RECOVERED = :recovered
105
+ EXHAUSTED = :exhausted
106
+ OPTED_OUT = :opted_out
107
+
108
+ # @!method self.values
109
+ # @return [Array<Symbol>]
110
+ end
111
+ end
112
+
113
+ # The event type
114
+ #
115
+ # @see Dodopayments::Models::AbandonedCheckoutDetectedWebhookEvent#type
116
+ module Type
117
+ extend Dodopayments::Internal::Type::Enum
118
+
119
+ ABANDONED_CHECKOUT_DETECTED = :"abandoned_checkout.detected"
120
+
121
+ # @!method self.values
122
+ # @return [Array<Symbol>]
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class AbandonedCheckoutRecoveredWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ # @!attribute business_id
7
+ # The business identifier
8
+ #
9
+ # @return [String]
10
+ required :business_id, String
11
+
12
+ # @!attribute data
13
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
14
+ # events
15
+ #
16
+ # @return [Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Data]
17
+ required :data, -> { Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data }
18
+
19
+ # @!attribute timestamp
20
+ # The timestamp of when the event occurred
21
+ #
22
+ # @return [Time]
23
+ required :timestamp, Time
24
+
25
+ # @!attribute type
26
+ # The event type
27
+ #
28
+ # @return [Symbol, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Type]
29
+ required :type, enum: -> { Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Type }
30
+
31
+ # @!method initialize(business_id:, data:, timestamp:, type:)
32
+ # Some parameter documentations has been truncated, see
33
+ # {Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent} for more details.
34
+ #
35
+ # @param business_id [String] The business identifier
36
+ #
37
+ # @param data [Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Data] Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
38
+ #
39
+ # @param timestamp [Time] The timestamp of when the event occurred
40
+ #
41
+ # @param type [Symbol, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Type] The event type
42
+
43
+ # @see Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent#data
44
+ class Data < Dodopayments::Internal::Type::BaseModel
45
+ # @!attribute abandoned_at
46
+ #
47
+ # @return [Time]
48
+ required :abandoned_at, Time
49
+
50
+ # @!attribute abandonment_reason
51
+ #
52
+ # @return [Symbol, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason]
53
+ required :abandonment_reason,
54
+ enum: -> { Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason }
55
+
56
+ # @!attribute customer_id
57
+ #
58
+ # @return [String]
59
+ required :customer_id, String
60
+
61
+ # @!attribute payment_id
62
+ #
63
+ # @return [String]
64
+ required :payment_id, String
65
+
66
+ # @!attribute status
67
+ #
68
+ # @return [Symbol, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Data::Status]
69
+ required :status, enum: -> { Dodopayments::AbandonedCheckoutRecoveredWebhookEvent::Data::Status }
70
+
71
+ # @!attribute recovered_payment_id
72
+ #
73
+ # @return [String, nil]
74
+ optional :recovered_payment_id, String, nil?: true
75
+
76
+ # @!method initialize(abandoned_at:, abandonment_reason:, customer_id:, payment_id:, status:, recovered_payment_id: nil)
77
+ # Webhook payload for abandoned_checkout.detected and abandoned_checkout.recovered
78
+ # events
79
+ #
80
+ # @param abandoned_at [Time]
81
+ # @param abandonment_reason [Symbol, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Data::AbandonmentReason]
82
+ # @param customer_id [String]
83
+ # @param payment_id [String]
84
+ # @param status [Symbol, Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Data::Status]
85
+ # @param recovered_payment_id [String, nil]
86
+
87
+ # @see Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Data#abandonment_reason
88
+ module AbandonmentReason
89
+ extend Dodopayments::Internal::Type::Enum
90
+
91
+ PAYMENT_FAILED = :payment_failed
92
+ CHECKOUT_INCOMPLETE = :checkout_incomplete
93
+
94
+ # @!method self.values
95
+ # @return [Array<Symbol>]
96
+ end
97
+
98
+ # @see Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent::Data#status
99
+ module Status
100
+ extend Dodopayments::Internal::Type::Enum
101
+
102
+ ABANDONED = :abandoned
103
+ RECOVERING = :recovering
104
+ RECOVERED = :recovered
105
+ EXHAUSTED = :exhausted
106
+ OPTED_OUT = :opted_out
107
+
108
+ # @!method self.values
109
+ # @return [Array<Symbol>]
110
+ end
111
+ end
112
+
113
+ # The event type
114
+ #
115
+ # @see Dodopayments::Models::AbandonedCheckoutRecoveredWebhookEvent#type
116
+ module Type
117
+ extend Dodopayments::Internal::Type::Enum
118
+
119
+ ABANDONED_CHECKOUT_RECOVERED = :"abandoned_checkout.recovered"
120
+
121
+ # @!method self.values
122
+ # @return [Array<Symbol>]
123
+ end
124
+ end
125
+ end
126
+ end
@@ -100,6 +100,8 @@ module Dodopayments
100
100
  DODO_CREDITS = :dodo_credits
101
101
  ADJUSTMENT = :adjustment
102
102
  CURRENCY_CONVERSION = :currency_conversion
103
+ ABANDONED_CART_RECOVERY_FEE = :abandoned_cart_recovery_fee
104
+ DUNNING_FEES = :dunning_fees
103
105
 
104
106
  # @!method self.values
105
107
  # @return [Array<Symbol>]
@@ -253,6 +253,8 @@ module Dodopayments
253
253
  DODO_CREDITS = :dodo_credits
254
254
  ADJUSTMENT = :adjustment
255
255
  CURRENCY_CONVERSION = :currency_conversion
256
+ ABANDONED_CART_RECOVERY_FEE = :abandoned_cart_recovery_fee
257
+ DUNNING_FEES = :dunning_fees
256
258
 
257
259
  # @!method self.values
258
260
  # @return [Array<Symbol>]
@@ -38,6 +38,11 @@ module Dodopayments
38
38
  # @return [String]
39
39
  required :discount_id, String
40
40
 
41
+ # @!attribute metadata
42
+ #
43
+ # @return [Hash{Symbol=>String}]
44
+ required :metadata, Dodopayments::Internal::Type::HashOf[String]
45
+
41
46
  # @!attribute preserve_on_plan_change
42
47
  # Whether this discount should be preserved when a subscription changes plans.
43
48
  # Default: false (discount is removed on plan change)
@@ -89,7 +94,7 @@ module Dodopayments
89
94
  # @return [Integer, nil]
90
95
  optional :usage_limit, Integer, nil?: true
91
96
 
92
- # @!method initialize(amount:, business_id:, code:, created_at:, discount_id:, preserve_on_plan_change:, restricted_to:, times_used:, type:, expires_at: nil, name: nil, subscription_cycles: nil, usage_limit: nil)
97
+ # @!method initialize(amount:, business_id:, code:, created_at:, discount_id:, metadata:, preserve_on_plan_change:, restricted_to:, times_used:, type:, expires_at: nil, name: nil, subscription_cycles: nil, usage_limit: nil)
93
98
  # Some parameter documentations has been truncated, see
94
99
  # {Dodopayments::Models::Discount} for more details.
95
100
  #
@@ -103,6 +108,8 @@ module Dodopayments
103
108
  #
104
109
  # @param discount_id [String] The unique discount ID
105
110
  #
111
+ # @param metadata [Hash{Symbol=>String}]
112
+ #
106
113
  # @param preserve_on_plan_change [Boolean] Whether this discount should be preserved when a subscription changes plans.
107
114
  #
108
115
  # @param restricted_to [Array<String>] List of product IDs to which this discount is restricted.
@@ -41,6 +41,12 @@ module Dodopayments
41
41
  # @return [Time, nil]
42
42
  optional :expires_at, Time, nil?: true
43
43
 
44
+ # @!attribute metadata
45
+ # Additional metadata for the discount
46
+ #
47
+ # @return [Hash{Symbol=>String}, nil]
48
+ optional :metadata, Dodopayments::Internal::Type::HashOf[String]
49
+
44
50
  # @!attribute name
45
51
  #
46
52
  # @return [String, nil]
@@ -73,7 +79,7 @@ module Dodopayments
73
79
  # @return [Integer, nil]
74
80
  optional :usage_limit, Integer, nil?: true
75
81
 
76
- # @!method initialize(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: {})
82
+ # @!method initialize(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: {})
77
83
  # Some parameter documentations has been truncated, see
78
84
  # {Dodopayments::Models::DiscountCreateParams} for more details.
79
85
  #
@@ -85,6 +91,8 @@ module Dodopayments
85
91
  #
86
92
  # @param expires_at [Time, nil] When the discount expires, if ever.
87
93
  #
94
+ # @param metadata [Hash{Symbol=>String}] Additional metadata for the discount
95
+ #
88
96
  # @param name [String, nil]
89
97
  #
90
98
  # @param preserve_on_plan_change [Boolean] Whether this discount should be preserved when a subscription changes plans.
@@ -35,6 +35,12 @@ module Dodopayments
35
35
  # @return [Time, nil]
36
36
  optional :expires_at, Time, nil?: true
37
37
 
38
+ # @!attribute metadata
39
+ # Additional metadata for the discount
40
+ #
41
+ # @return [Hash{Symbol=>String}, nil]
42
+ optional :metadata, Dodopayments::Internal::Type::HashOf[String], nil?: true
43
+
38
44
  # @!attribute name
39
45
  #
40
46
  # @return [String, nil]
@@ -73,7 +79,7 @@ module Dodopayments
73
79
  # @return [Integer, nil]
74
80
  optional :usage_limit, Integer, nil?: true
75
81
 
76
- # @!method initialize(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: {})
82
+ # @!method initialize(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: {})
77
83
  # Some parameter documentations has been truncated, see
78
84
  # {Dodopayments::Models::DiscountUpdateParams} for more details.
79
85
  #
@@ -85,6 +91,8 @@ module Dodopayments
85
91
  #
86
92
  # @param expires_at [Time, nil]
87
93
  #
94
+ # @param metadata [Hash{Symbol=>String}, nil] Additional metadata for the discount
95
+ #
88
96
  # @param name [String, nil]
89
97
  #
90
98
  # @param preserve_on_plan_change [Boolean, nil] Whether this discount should be preserved when a subscription changes plans.
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class DunningRecoveredWebhookEvent < Dodopayments::Internal::Type::BaseModel
6
+ # @!attribute business_id
7
+ # The business identifier
8
+ #
9
+ # @return [String]
10
+ required :business_id, String
11
+
12
+ # @!attribute data
13
+ # Webhook payload for dunning.started and dunning.recovered events
14
+ #
15
+ # @return [Dodopayments::Models::DunningRecoveredWebhookEvent::Data]
16
+ required :data, -> { Dodopayments::DunningRecoveredWebhookEvent::Data }
17
+
18
+ # @!attribute timestamp
19
+ # The timestamp of when the event occurred
20
+ #
21
+ # @return [Time]
22
+ required :timestamp, Time
23
+
24
+ # @!attribute type
25
+ # The event type
26
+ #
27
+ # @return [Symbol, Dodopayments::Models::DunningRecoveredWebhookEvent::Type]
28
+ required :type, enum: -> { Dodopayments::DunningRecoveredWebhookEvent::Type }
29
+
30
+ # @!method initialize(business_id:, data:, timestamp:, type:)
31
+ # @param business_id [String] The business identifier
32
+ #
33
+ # @param data [Dodopayments::Models::DunningRecoveredWebhookEvent::Data] Webhook payload for dunning.started and dunning.recovered events
34
+ #
35
+ # @param timestamp [Time] The timestamp of when the event occurred
36
+ #
37
+ # @param type [Symbol, Dodopayments::Models::DunningRecoveredWebhookEvent::Type] The event type
38
+
39
+ # @see Dodopayments::Models::DunningRecoveredWebhookEvent#data
40
+ class Data < Dodopayments::Internal::Type::BaseModel
41
+ # @!attribute created_at
42
+ #
43
+ # @return [Time]
44
+ required :created_at, Time
45
+
46
+ # @!attribute customer_id
47
+ #
48
+ # @return [String]
49
+ required :customer_id, String
50
+
51
+ # @!attribute status
52
+ #
53
+ # @return [Symbol, Dodopayments::Models::DunningRecoveredWebhookEvent::Data::Status]
54
+ required :status, enum: -> { Dodopayments::DunningRecoveredWebhookEvent::Data::Status }
55
+
56
+ # @!attribute subscription_id
57
+ #
58
+ # @return [String]
59
+ required :subscription_id, String
60
+
61
+ # @!attribute trigger_state
62
+ #
63
+ # @return [Symbol, Dodopayments::Models::DunningRecoveredWebhookEvent::Data::TriggerState]
64
+ required :trigger_state, enum: -> { Dodopayments::DunningRecoveredWebhookEvent::Data::TriggerState }
65
+
66
+ # @!attribute payment_id
67
+ #
68
+ # @return [String, nil]
69
+ optional :payment_id, String, nil?: true
70
+
71
+ # @!method initialize(created_at:, customer_id:, status:, subscription_id:, trigger_state:, payment_id: nil)
72
+ # Webhook payload for dunning.started and dunning.recovered events
73
+ #
74
+ # @param created_at [Time]
75
+ # @param customer_id [String]
76
+ # @param status [Symbol, Dodopayments::Models::DunningRecoveredWebhookEvent::Data::Status]
77
+ # @param subscription_id [String]
78
+ # @param trigger_state [Symbol, Dodopayments::Models::DunningRecoveredWebhookEvent::Data::TriggerState]
79
+ # @param payment_id [String, nil]
80
+
81
+ # @see Dodopayments::Models::DunningRecoveredWebhookEvent::Data#status
82
+ module Status
83
+ extend Dodopayments::Internal::Type::Enum
84
+
85
+ RECOVERING = :recovering
86
+ RECOVERED = :recovered
87
+ EXHAUSTED = :exhausted
88
+
89
+ # @!method self.values
90
+ # @return [Array<Symbol>]
91
+ end
92
+
93
+ # @see Dodopayments::Models::DunningRecoveredWebhookEvent::Data#trigger_state
94
+ module TriggerState
95
+ extend Dodopayments::Internal::Type::Enum
96
+
97
+ ON_HOLD = :on_hold
98
+ CANCELLED = :cancelled
99
+
100
+ # @!method self.values
101
+ # @return [Array<Symbol>]
102
+ end
103
+ end
104
+
105
+ # The event type
106
+ #
107
+ # @see Dodopayments::Models::DunningRecoveredWebhookEvent#type
108
+ module Type
109
+ extend Dodopayments::Internal::Type::Enum
110
+
111
+ DUNNING_RECOVERED = :"dunning.recovered"
112
+
113
+ # @!method self.values
114
+ # @return [Array<Symbol>]
115
+ end
116
+ end
117
+ end
118
+ end