dodopayments 1.51.1 → 1.52.5

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +1 -1
  4. data/lib/dodopayments/client.rb +8 -0
  5. data/lib/dodopayments/models/add_meter_to_price.rb +58 -0
  6. data/lib/dodopayments/models/event.rb +71 -0
  7. data/lib/dodopayments/models/event_input.rb +70 -0
  8. data/lib/dodopayments/models/invoices/payment_retrieve_refund_params.rb +16 -0
  9. data/lib/dodopayments/models/meter.rb +88 -0
  10. data/lib/dodopayments/models/meter_aggregation.rb +39 -0
  11. data/lib/dodopayments/models/meter_archive_params.rb +14 -0
  12. data/lib/dodopayments/models/meter_create_params.rb +62 -0
  13. data/lib/dodopayments/models/meter_filter.rb +482 -0
  14. data/lib/dodopayments/models/meter_list_params.rb +38 -0
  15. data/lib/dodopayments/models/{product_delete_params.rb → meter_retrieve_params.rb} +2 -2
  16. data/lib/dodopayments/models/meter_unarchive_params.rb +14 -0
  17. data/lib/dodopayments/models/payment.rb +10 -1
  18. data/lib/dodopayments/models/price.rb +122 -7
  19. data/lib/dodopayments/models/product.rb +2 -2
  20. data/lib/dodopayments/models/product_archive_params.rb +14 -0
  21. data/lib/dodopayments/models/product_create_params.rb +2 -2
  22. data/lib/dodopayments/models/product_list_response.rb +2 -2
  23. data/lib/dodopayments/models/product_update_params.rb +2 -2
  24. data/lib/dodopayments/models/subscription.rb +57 -1
  25. data/lib/dodopayments/models/subscription_retrieve_usage_history_params.rb +54 -0
  26. data/lib/dodopayments/models/subscription_retrieve_usage_history_response.rb +101 -0
  27. data/lib/dodopayments/models/usage_event_ingest_params.rb +22 -0
  28. data/lib/dodopayments/models/usage_event_ingest_response.rb +16 -0
  29. data/lib/dodopayments/models/usage_event_list_params.rb +75 -0
  30. data/lib/dodopayments/models/usage_event_retrieve_params.rb +14 -0
  31. data/lib/dodopayments/models.rb +32 -2
  32. data/lib/dodopayments/resources/invoices/payments.rb +18 -0
  33. data/lib/dodopayments/resources/meters.rb +123 -0
  34. data/lib/dodopayments/resources/products.rb +5 -5
  35. data/lib/dodopayments/resources/subscriptions.rb +74 -0
  36. data/lib/dodopayments/resources/usage_events.rb +193 -0
  37. data/lib/dodopayments/version.rb +1 -1
  38. data/lib/dodopayments.rb +21 -1
  39. data/rbi/dodopayments/client.rbi +6 -0
  40. data/rbi/dodopayments/models/add_meter_to_price.rbi +75 -0
  41. data/rbi/dodopayments/models/event.rbi +88 -0
  42. data/rbi/dodopayments/models/event_input.rbi +102 -0
  43. data/rbi/dodopayments/models/invoices/payment_retrieve_refund_params.rbi +34 -0
  44. data/rbi/dodopayments/models/meter.rbi +107 -0
  45. data/rbi/dodopayments/models/meter_aggregation.rbi +68 -0
  46. data/rbi/dodopayments/models/meter_archive_params.rbi +32 -0
  47. data/rbi/dodopayments/models/meter_create_params.rbi +92 -0
  48. data/rbi/dodopayments/models/meter_filter.rbi +1042 -0
  49. data/rbi/dodopayments/models/meter_list_params.rbi +68 -0
  50. data/rbi/dodopayments/models/{product_delete_params.rbi → meter_retrieve_params.rbi} +2 -2
  51. data/rbi/dodopayments/models/meter_unarchive_params.rbi +32 -0
  52. data/rbi/dodopayments/models/payment.rbi +10 -0
  53. data/rbi/dodopayments/models/price.rbi +153 -7
  54. data/rbi/dodopayments/models/product.rbi +2 -1
  55. data/rbi/dodopayments/models/product_archive_params.rbi +32 -0
  56. data/rbi/dodopayments/models/product_create_params.rbi +6 -3
  57. data/rbi/dodopayments/models/product_list_response.rbi +2 -1
  58. data/rbi/dodopayments/models/product_update_params.rbi +6 -3
  59. data/rbi/dodopayments/models/subscription.rbi +78 -0
  60. data/rbi/dodopayments/models/subscription_retrieve_usage_history_params.rbi +78 -0
  61. data/rbi/dodopayments/models/subscription_retrieve_usage_history_response.rbi +159 -0
  62. data/rbi/dodopayments/models/usage_event_ingest_params.rbi +46 -0
  63. data/rbi/dodopayments/models/usage_event_ingest_response.rbi +26 -0
  64. data/rbi/dodopayments/models/usage_event_list_params.rbi +119 -0
  65. data/rbi/dodopayments/models/usage_event_retrieve_params.rbi +32 -0
  66. data/rbi/dodopayments/models.rbi +33 -2
  67. data/rbi/dodopayments/resources/invoices/payments.rbi +9 -0
  68. data/rbi/dodopayments/resources/meters.rbi +102 -0
  69. data/rbi/dodopayments/resources/products.rbi +5 -3
  70. data/rbi/dodopayments/resources/subscriptions.rbi +74 -0
  71. data/rbi/dodopayments/resources/usage_events.rbi +175 -0
  72. data/sig/dodopayments/client.rbs +4 -0
  73. data/sig/dodopayments/models/add_meter_to_price.rbs +45 -0
  74. data/sig/dodopayments/models/event.rbs +53 -0
  75. data/sig/dodopayments/models/event_input.rbs +48 -0
  76. data/sig/dodopayments/models/invoices/payment_retrieve_refund_params.rbs +17 -0
  77. data/sig/dodopayments/models/meter.rbs +65 -0
  78. data/sig/dodopayments/models/meter_aggregation.rbs +35 -0
  79. data/sig/dodopayments/models/meter_archive_params.rbs +15 -0
  80. data/sig/dodopayments/models/meter_create_params.rbs +51 -0
  81. data/sig/dodopayments/models/meter_filter.rbs +417 -0
  82. data/sig/dodopayments/models/meter_list_params.rbs +38 -0
  83. data/sig/dodopayments/models/{product_delete_params.rbs → meter_retrieve_params.rbs} +2 -2
  84. data/sig/dodopayments/models/meter_unarchive_params.rbs +15 -0
  85. data/sig/dodopayments/models/payment.rbs +5 -0
  86. data/sig/dodopayments/models/price.rbs +88 -9
  87. data/sig/dodopayments/models/product_archive_params.rbs +15 -0
  88. data/sig/dodopayments/models/subscription.rbs +52 -0
  89. data/sig/dodopayments/models/subscription_retrieve_usage_history_params.rbs +46 -0
  90. data/sig/dodopayments/models/subscription_retrieve_usage_history_response.rbs +82 -0
  91. data/sig/dodopayments/models/usage_event_ingest_params.rbs +24 -0
  92. data/sig/dodopayments/models/usage_event_ingest_response.rbs +13 -0
  93. data/sig/dodopayments/models/usage_event_list_params.rbs +70 -0
  94. data/sig/dodopayments/models/usage_event_retrieve_params.rbs +15 -0
  95. data/sig/dodopayments/models.rbs +32 -2
  96. data/sig/dodopayments/resources/invoices/payments.rbs +5 -0
  97. data/sig/dodopayments/resources/meters.rbs +39 -0
  98. data/sig/dodopayments/resources/products.rbs +1 -1
  99. data/sig/dodopayments/resources/subscriptions.rbs +10 -0
  100. data/sig/dodopayments/resources/usage_events.rbs +28 -0
  101. metadata +65 -5
@@ -0,0 +1,159 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class SubscriptionRetrieveUsageHistoryResponse < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ # End date of the billing period
15
+ sig { returns(Time) }
16
+ attr_accessor :end_date
17
+
18
+ # List of meters and their usage for this billing period
19
+ sig do
20
+ returns(
21
+ T::Array[
22
+ Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse::Meter
23
+ ]
24
+ )
25
+ end
26
+ attr_accessor :meters
27
+
28
+ # Start date of the billing period
29
+ sig { returns(Time) }
30
+ attr_accessor :start_date
31
+
32
+ sig do
33
+ params(
34
+ end_date: Time,
35
+ meters:
36
+ T::Array[
37
+ Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse::Meter::OrHash
38
+ ],
39
+ start_date: Time
40
+ ).returns(T.attached_class)
41
+ end
42
+ def self.new(
43
+ # End date of the billing period
44
+ end_date:,
45
+ # List of meters and their usage for this billing period
46
+ meters:,
47
+ # Start date of the billing period
48
+ start_date:
49
+ )
50
+ end
51
+
52
+ sig do
53
+ override.returns(
54
+ {
55
+ end_date: Time,
56
+ meters:
57
+ T::Array[
58
+ Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse::Meter
59
+ ],
60
+ start_date: Time
61
+ }
62
+ )
63
+ end
64
+ def to_hash
65
+ end
66
+
67
+ class Meter < Dodopayments::Internal::Type::BaseModel
68
+ OrHash =
69
+ T.type_alias do
70
+ T.any(
71
+ Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse::Meter,
72
+ Dodopayments::Internal::AnyHash
73
+ )
74
+ end
75
+
76
+ # Meter identifier
77
+ sig { returns(String) }
78
+ attr_accessor :id
79
+
80
+ # Chargeable units (after free threshold) as string for precision
81
+ sig { returns(String) }
82
+ attr_accessor :chargeable_units
83
+
84
+ # Total units consumed as string for precision
85
+ sig { returns(String) }
86
+ attr_accessor :consumed_units
87
+
88
+ # Currency for the price per unit
89
+ sig { returns(Dodopayments::Currency::TaggedSymbol) }
90
+ attr_accessor :currency
91
+
92
+ # Free threshold units for this meter
93
+ sig { returns(Integer) }
94
+ attr_accessor :free_threshold
95
+
96
+ # Meter name
97
+ sig { returns(String) }
98
+ attr_accessor :name
99
+
100
+ # Price per unit in string format for precision
101
+ sig { returns(String) }
102
+ attr_accessor :price_per_unit
103
+
104
+ # Total price charged for this meter in smallest currency unit (cents)
105
+ sig { returns(Integer) }
106
+ attr_accessor :total_price
107
+
108
+ sig do
109
+ params(
110
+ id: String,
111
+ chargeable_units: String,
112
+ consumed_units: String,
113
+ currency: Dodopayments::Currency::OrSymbol,
114
+ free_threshold: Integer,
115
+ name: String,
116
+ price_per_unit: String,
117
+ total_price: Integer
118
+ ).returns(T.attached_class)
119
+ end
120
+ def self.new(
121
+ # Meter identifier
122
+ id:,
123
+ # Chargeable units (after free threshold) as string for precision
124
+ chargeable_units:,
125
+ # Total units consumed as string for precision
126
+ consumed_units:,
127
+ # Currency for the price per unit
128
+ currency:,
129
+ # Free threshold units for this meter
130
+ free_threshold:,
131
+ # Meter name
132
+ name:,
133
+ # Price per unit in string format for precision
134
+ price_per_unit:,
135
+ # Total price charged for this meter in smallest currency unit (cents)
136
+ total_price:
137
+ )
138
+ end
139
+
140
+ sig do
141
+ override.returns(
142
+ {
143
+ id: String,
144
+ chargeable_units: String,
145
+ consumed_units: String,
146
+ currency: Dodopayments::Currency::TaggedSymbol,
147
+ free_threshold: Integer,
148
+ name: String,
149
+ price_per_unit: String,
150
+ total_price: Integer
151
+ }
152
+ )
153
+ end
154
+ def to_hash
155
+ end
156
+ end
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,46 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class UsageEventIngestParams < Dodopayments::Internal::Type::BaseModel
6
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
7
+ include Dodopayments::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Dodopayments::UsageEventIngestParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # List of events to be pushed
18
+ sig { returns(T::Array[Dodopayments::EventInput]) }
19
+ attr_accessor :events
20
+
21
+ sig do
22
+ params(
23
+ events: T::Array[Dodopayments::EventInput::OrHash],
24
+ request_options: Dodopayments::RequestOptions::OrHash
25
+ ).returns(T.attached_class)
26
+ end
27
+ def self.new(
28
+ # List of events to be pushed
29
+ events:,
30
+ request_options: {}
31
+ )
32
+ end
33
+
34
+ sig do
35
+ override.returns(
36
+ {
37
+ events: T::Array[Dodopayments::EventInput],
38
+ request_options: Dodopayments::RequestOptions
39
+ }
40
+ )
41
+ end
42
+ def to_hash
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,26 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class UsageEventIngestResponse < Dodopayments::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Dodopayments::Models::UsageEventIngestResponse,
10
+ Dodopayments::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(Integer) }
15
+ attr_accessor :ingested_count
16
+
17
+ sig { params(ingested_count: Integer).returns(T.attached_class) }
18
+ def self.new(ingested_count:)
19
+ end
20
+
21
+ sig { override.returns({ ingested_count: Integer }) }
22
+ def to_hash
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,119 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class UsageEventListParams < Dodopayments::Internal::Type::BaseModel
6
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
7
+ include Dodopayments::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Dodopayments::UsageEventListParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ # Filter events by customer ID
18
+ sig { returns(T.nilable(String)) }
19
+ attr_reader :customer_id
20
+
21
+ sig { params(customer_id: String).void }
22
+ attr_writer :customer_id
23
+
24
+ # Filter events created before this timestamp
25
+ sig { returns(T.nilable(Time)) }
26
+ attr_reader :end_
27
+
28
+ sig { params(end_: Time).void }
29
+ attr_writer :end_
30
+
31
+ # Filter events by event name. If both event_name and meter_id are provided, they
32
+ # must match the meter's configured event_name
33
+ sig { returns(T.nilable(String)) }
34
+ attr_reader :event_name
35
+
36
+ sig { params(event_name: String).void }
37
+ attr_writer :event_name
38
+
39
+ # Filter events by meter ID. When provided, only events that match the meter's
40
+ # event_name and filter criteria will be returned
41
+ sig { returns(T.nilable(String)) }
42
+ attr_reader :meter_id
43
+
44
+ sig { params(meter_id: String).void }
45
+ attr_writer :meter_id
46
+
47
+ # Page number (0-based, default: 0)
48
+ sig { returns(T.nilable(Integer)) }
49
+ attr_reader :page_number
50
+
51
+ sig { params(page_number: Integer).void }
52
+ attr_writer :page_number
53
+
54
+ # Number of events to return per page (default: 10)
55
+ sig { returns(T.nilable(Integer)) }
56
+ attr_reader :page_size
57
+
58
+ sig { params(page_size: Integer).void }
59
+ attr_writer :page_size
60
+
61
+ # Filter events created after this timestamp
62
+ sig { returns(T.nilable(Time)) }
63
+ attr_reader :start
64
+
65
+ sig { params(start: Time).void }
66
+ attr_writer :start
67
+
68
+ sig do
69
+ params(
70
+ customer_id: String,
71
+ end_: Time,
72
+ event_name: String,
73
+ meter_id: String,
74
+ page_number: Integer,
75
+ page_size: Integer,
76
+ start: Time,
77
+ request_options: Dodopayments::RequestOptions::OrHash
78
+ ).returns(T.attached_class)
79
+ end
80
+ def self.new(
81
+ # Filter events by customer ID
82
+ customer_id: nil,
83
+ # Filter events created before this timestamp
84
+ end_: nil,
85
+ # Filter events by event name. If both event_name and meter_id are provided, they
86
+ # must match the meter's configured event_name
87
+ event_name: nil,
88
+ # Filter events by meter ID. When provided, only events that match the meter's
89
+ # event_name and filter criteria will be returned
90
+ meter_id: nil,
91
+ # Page number (0-based, default: 0)
92
+ page_number: nil,
93
+ # Number of events to return per page (default: 10)
94
+ page_size: nil,
95
+ # Filter events created after this timestamp
96
+ start: nil,
97
+ request_options: {}
98
+ )
99
+ end
100
+
101
+ sig do
102
+ override.returns(
103
+ {
104
+ customer_id: String,
105
+ end_: Time,
106
+ event_name: String,
107
+ meter_id: String,
108
+ page_number: Integer,
109
+ page_size: Integer,
110
+ start: Time,
111
+ request_options: Dodopayments::RequestOptions
112
+ }
113
+ )
114
+ end
115
+ def to_hash
116
+ end
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,32 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Models
5
+ class UsageEventRetrieveParams < Dodopayments::Internal::Type::BaseModel
6
+ extend Dodopayments::Internal::Type::RequestParameters::Converter
7
+ include Dodopayments::Internal::Type::RequestParameters
8
+
9
+ OrHash =
10
+ T.type_alias do
11
+ T.any(
12
+ Dodopayments::UsageEventRetrieveParams,
13
+ Dodopayments::Internal::AnyHash
14
+ )
15
+ end
16
+
17
+ sig do
18
+ params(request_options: Dodopayments::RequestOptions::OrHash).returns(
19
+ T.attached_class
20
+ )
21
+ end
22
+ def self.new(request_options: {})
23
+ end
24
+
25
+ sig do
26
+ override.returns({ request_options: Dodopayments::RequestOptions })
27
+ end
28
+ def to_hash
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,6 +1,8 @@
1
1
  # typed: strong
2
2
 
3
3
  module Dodopayments
4
+ AddMeterToPrice = Dodopayments::Models::AddMeterToPrice
5
+
4
6
  AddonCartResponseItem = Dodopayments::Models::AddonCartResponseItem
5
7
 
6
8
  AddonCreateParams = Dodopayments::Models::AddonCreateParams
@@ -88,6 +90,10 @@ module Dodopayments
88
90
 
89
91
  DisputeStatus = Dodopayments::Models::DisputeStatus
90
92
 
93
+ Event = Dodopayments::Models::Event
94
+
95
+ EventInput = Dodopayments::Models::EventInput
96
+
91
97
  GetDispute = Dodopayments::Models::GetDispute
92
98
 
93
99
  IntentStatus = Dodopayments::Models::IntentStatus
@@ -123,6 +129,22 @@ module Dodopayments
123
129
 
124
130
  LicenseValidateParams = Dodopayments::Models::LicenseValidateParams
125
131
 
132
+ Meter = Dodopayments::Models::Meter
133
+
134
+ MeterAggregation = Dodopayments::Models::MeterAggregation
135
+
136
+ MeterArchiveParams = Dodopayments::Models::MeterArchiveParams
137
+
138
+ MeterCreateParams = Dodopayments::Models::MeterCreateParams
139
+
140
+ MeterFilter = Dodopayments::Models::MeterFilter
141
+
142
+ MeterListParams = Dodopayments::Models::MeterListParams
143
+
144
+ MeterRetrieveParams = Dodopayments::Models::MeterRetrieveParams
145
+
146
+ MeterUnarchiveParams = Dodopayments::Models::MeterUnarchiveParams
147
+
126
148
  MiscListSupportedCountriesParams =
127
149
  Dodopayments::Models::MiscListSupportedCountriesParams
128
150
 
@@ -151,9 +173,9 @@ module Dodopayments
151
173
 
152
174
  Product = Dodopayments::Models::Product
153
175
 
154
- ProductCreateParams = Dodopayments::Models::ProductCreateParams
176
+ ProductArchiveParams = Dodopayments::Models::ProductArchiveParams
155
177
 
156
- ProductDeleteParams = Dodopayments::Models::ProductDeleteParams
178
+ ProductCreateParams = Dodopayments::Models::ProductCreateParams
157
179
 
158
180
  ProductListParams = Dodopayments::Models::ProductListParams
159
181
 
@@ -190,6 +212,9 @@ module Dodopayments
190
212
 
191
213
  SubscriptionRetrieveParams = Dodopayments::Models::SubscriptionRetrieveParams
192
214
 
215
+ SubscriptionRetrieveUsageHistoryParams =
216
+ Dodopayments::Models::SubscriptionRetrieveUsageHistoryParams
217
+
193
218
  SubscriptionStatus = Dodopayments::Models::SubscriptionStatus
194
219
 
195
220
  SubscriptionUpdateParams = Dodopayments::Models::SubscriptionUpdateParams
@@ -198,6 +223,12 @@ module Dodopayments
198
223
 
199
224
  TimeInterval = Dodopayments::Models::TimeInterval
200
225
 
226
+ UsageEventIngestParams = Dodopayments::Models::UsageEventIngestParams
227
+
228
+ UsageEventListParams = Dodopayments::Models::UsageEventListParams
229
+
230
+ UsageEventRetrieveParams = Dodopayments::Models::UsageEventRetrieveParams
231
+
201
232
  WebhookCreateParams = Dodopayments::Models::WebhookCreateParams
202
233
 
203
234
  WebhookDeleteParams = Dodopayments::Models::WebhookDeleteParams
@@ -13,6 +13,15 @@ module Dodopayments
13
13
  def retrieve(payment_id, request_options: {})
14
14
  end
15
15
 
16
+ sig do
17
+ params(
18
+ refund_id: String,
19
+ request_options: Dodopayments::RequestOptions::OrHash
20
+ ).returns(StringIO)
21
+ end
22
+ def retrieve_refund(refund_id, request_options: {})
23
+ end
24
+
16
25
  # @api private
17
26
  sig { params(client: Dodopayments::Client).returns(T.attached_class) }
18
27
  def self.new(client:)
@@ -0,0 +1,102 @@
1
+ # typed: strong
2
+
3
+ module Dodopayments
4
+ module Resources
5
+ class Meters
6
+ sig do
7
+ params(
8
+ aggregation: Dodopayments::MeterAggregation::OrHash,
9
+ event_name: String,
10
+ measurement_unit: String,
11
+ name: String,
12
+ description: T.nilable(String),
13
+ filter: T.nilable(Dodopayments::MeterFilter::OrHash),
14
+ request_options: Dodopayments::RequestOptions::OrHash
15
+ ).returns(Dodopayments::Meter)
16
+ end
17
+ def create(
18
+ # Aggregation configuration for the meter
19
+ aggregation:,
20
+ # Event name to track
21
+ event_name:,
22
+ # measurement unit
23
+ measurement_unit:,
24
+ # Name of the meter
25
+ name:,
26
+ # Optional description of the meter
27
+ description: nil,
28
+ # Optional filter to apply to the meter
29
+ filter: nil,
30
+ request_options: {}
31
+ )
32
+ end
33
+
34
+ sig do
35
+ params(
36
+ id: String,
37
+ request_options: Dodopayments::RequestOptions::OrHash
38
+ ).returns(Dodopayments::Meter)
39
+ end
40
+ def retrieve(
41
+ # Meter ID
42
+ id,
43
+ request_options: {}
44
+ )
45
+ end
46
+
47
+ sig do
48
+ params(
49
+ archived: T::Boolean,
50
+ page_number: Integer,
51
+ page_size: Integer,
52
+ request_options: Dodopayments::RequestOptions::OrHash
53
+ ).returns(
54
+ Dodopayments::Internal::DefaultPageNumberPagination[
55
+ Dodopayments::Meter
56
+ ]
57
+ )
58
+ end
59
+ def list(
60
+ # List archived meters
61
+ archived: nil,
62
+ # Page number default is 0
63
+ page_number: nil,
64
+ # Page size default is 10 max is 100
65
+ page_size: nil,
66
+ request_options: {}
67
+ )
68
+ end
69
+
70
+ sig do
71
+ params(
72
+ id: String,
73
+ request_options: Dodopayments::RequestOptions::OrHash
74
+ ).void
75
+ end
76
+ def archive(
77
+ # Meter ID
78
+ id,
79
+ request_options: {}
80
+ )
81
+ end
82
+
83
+ sig do
84
+ params(
85
+ id: String,
86
+ request_options: Dodopayments::RequestOptions::OrHash
87
+ ).void
88
+ end
89
+ def unarchive(
90
+ # Meter ID
91
+ id,
92
+ request_options: {}
93
+ )
94
+ end
95
+
96
+ # @api private
97
+ sig { params(client: Dodopayments::Client).returns(T.attached_class) }
98
+ def self.new(client:)
99
+ end
100
+ end
101
+ end
102
+ end
@@ -11,7 +11,8 @@ module Dodopayments
11
11
  price:
12
12
  T.any(
13
13
  Dodopayments::Price::OneTimePrice::OrHash,
14
- Dodopayments::Price::RecurringPrice::OrHash
14
+ Dodopayments::Price::RecurringPrice::OrHash,
15
+ Dodopayments::Price::UsageBasedPrice::OrHash
15
16
  ),
16
17
  tax_category: Dodopayments::TaxCategory::OrSymbol,
17
18
  addons: T.nilable(T::Array[String]),
@@ -97,7 +98,8 @@ module Dodopayments
97
98
  T.nilable(
98
99
  T.any(
99
100
  Dodopayments::Price::OneTimePrice::OrHash,
100
- Dodopayments::Price::RecurringPrice::OrHash
101
+ Dodopayments::Price::RecurringPrice::OrHash,
102
+ Dodopayments::Price::UsageBasedPrice::OrHash
101
103
  )
102
104
  ),
103
105
  tax_category: T.nilable(Dodopayments::TaxCategory::OrSymbol),
@@ -186,7 +188,7 @@ module Dodopayments
186
188
  request_options: Dodopayments::RequestOptions::OrHash
187
189
  ).void
188
190
  end
189
- def delete(id, request_options: {})
191
+ def archive(id, request_options: {})
190
192
  end
191
193
 
192
194
  sig do
@@ -210,6 +210,80 @@ module Dodopayments
210
210
  )
211
211
  end
212
212
 
213
+ # Get detailed usage history for a subscription that includes usage-based billing
214
+ # (metered components). This endpoint provides insights into customer usage
215
+ # patterns and billing calculations over time.
216
+ #
217
+ # ## What You'll Get:
218
+ #
219
+ # - **Billing periods**: Each item represents a billing cycle with start and end
220
+ # dates
221
+ # - **Meter usage**: Detailed breakdown of usage for each meter configured on the
222
+ # subscription
223
+ # - **Usage calculations**: Total units consumed, free threshold units, and
224
+ # chargeable units
225
+ # - **Historical tracking**: Complete audit trail of usage-based charges
226
+ #
227
+ # ## Use Cases:
228
+ #
229
+ # - **Customer support**: Investigate billing questions and usage discrepancies
230
+ # - **Usage analytics**: Analyze customer consumption patterns over time
231
+ # - **Billing transparency**: Provide customers with detailed usage breakdowns
232
+ # - **Revenue optimization**: Identify usage trends to optimize pricing strategies
233
+ #
234
+ # ## Filtering Options:
235
+ #
236
+ # - **Date range filtering**: Get usage history for specific time periods
237
+ # - **Meter-specific filtering**: Focus on usage for a particular meter
238
+ # - **Pagination**: Navigate through large usage histories efficiently
239
+ #
240
+ # ## Important Notes:
241
+ #
242
+ # - Only returns data for subscriptions with usage-based (metered) components
243
+ # - Usage history is organized by billing periods (subscription cycles)
244
+ # - Free threshold units are calculated and displayed separately from chargeable
245
+ # units
246
+ # - Historical data is preserved even if meter configurations change
247
+ #
248
+ # ## Example Query Patterns:
249
+ #
250
+ # - Get last 3 months:
251
+ # `?start_date=2024-01-01T00:00:00Z&end_date=2024-03-31T23:59:59Z`
252
+ # - Filter by meter: `?meter_id=mtr_api_requests`
253
+ # - Paginate results: `?page_size=20&page_number=1`
254
+ # - Recent usage: `?start_date=2024-03-01T00:00:00Z` (from March 1st to now)
255
+ sig do
256
+ params(
257
+ subscription_id: String,
258
+ end_date: T.nilable(Time),
259
+ meter_id: T.nilable(String),
260
+ page_number: T.nilable(Integer),
261
+ page_size: T.nilable(Integer),
262
+ start_date: T.nilable(Time),
263
+ request_options: Dodopayments::RequestOptions::OrHash
264
+ ).returns(
265
+ Dodopayments::Internal::DefaultPageNumberPagination[
266
+ Dodopayments::Models::SubscriptionRetrieveUsageHistoryResponse
267
+ ]
268
+ )
269
+ end
270
+ def retrieve_usage_history(
271
+ # Unique subscription identifier
272
+ subscription_id,
273
+ # Filter by end date (inclusive)
274
+ end_date: nil,
275
+ # Filter by specific meter ID
276
+ meter_id: nil,
277
+ # Page number (default: 0)
278
+ page_number: nil,
279
+ # Page size (default: 10, max: 100)
280
+ page_size: nil,
281
+ # Filter by start date (inclusive)
282
+ start_date: nil,
283
+ request_options: {}
284
+ )
285
+ end
286
+
213
287
  # @api private
214
288
  sig { params(client: Dodopayments::Client).returns(T.attached_class) }
215
289
  def self.new(client:)